【发布时间】:2014-09-02 16:41:58
【问题描述】:
我有以下代码可以将 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 中,日期是 02/07/2014 (DD/MM/YYYY) 在 Excel 中,日期是 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"
更新:
添加(作为测试):
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;看看是否有效? -
我稍后会试试这个。谢谢。
-
好吧,它在单元格中插入“14”,将日期格式化为 dd/mm/yyyy 带来的结果就像 mm/dd/yyyy
标签: javascript export-to-excel