我有以下代碼HTML表格導出到Excel:HTML到Excel:數據格式改變
function exportToExcel(tableID)
{
var detailsTable= document.getElementById(tableID);
var oExcel = new ActiveXObject("Excel.Application");
var oBook = oExcel.Workbooks.Add;
var oSheet = oBook.Worksheets(1);
for (var y=0;y<detailsTable.rows.length;y++)
{
for (var x=0;x<detailsTable.rows(y).cells.length;x++)
{
oSheet.Cells(y+1,x+1)= detailsTable.rows(y).cells(x).innerText;
}
}
oExcel.Visible = true;
oExcel.UserControl = true;
oExcel.Columns.AutoFit();
oExcel.Rows.Autofit();
}
出口工作,但Excel將改變在某些情況下的日期。而不是DD/MM/YYYY它會更改爲MM/DD/YYYY。
例如:在HTML中日期爲29/05/2014(DD/MM/YYYY),在Excel中日期爲29/05/2014(DD/MM/YYYY)。在HTML中,日期爲2014年2月7日(DD/MM/YYYY),日期爲07/02/2014(MM/DD/YYYY),這最後一種情況是錯誤的。
嘗試沒有格式化的JavaScript日期幸運:
var now = new Date();
now.format("dd/mm/yyyy");
嘗試使用NumberFormat的不幸運:
oExcel.Cells(y+1,x+1).NumberFormat = "DD/MM/YYYY";
試圖用風格在TD不幸運:
style="mso-number-format:"dd\/mm\/yyyy"
UPDATE:
添加(作爲測試):
oSheet.Cells(y+1,x+1).NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"
內側的第二for
,實際上格式化日期。正如我所看到的,在這一點上日期已經是錯誤的了。我的意思是,表格中顯示的是07/11/2014(dd/mm/yyyy),並在出口顯示11/07/2014(mm/dd/yyyy)
你可以試試'oExcel.Cells(y + 1,x + 1).NumberFormat = 14;'看看是否有效? – 2014-11-28 19:36:18
我會稍後再試。謝謝。 – Khrys 2014-11-29 11:02:05
好吧,它在單元格中插入「14」,格式化日期爲dd/mm/yyyy帶來的結果好像是mm/dd/yyyy – Khrys 2014-12-02 19:53:19