我正在尝试使用新的 ActiveXObject("Excel.application")
将 HTML 表格转换为 Javascript 中的 Excel。基本上,我循环遍历表格单元格并将值插入到 Excel 中的相应单元格中:
//for each table cell
oSheet.Cells(x,y).value = cell.innerText;
问题是,当单元格的日期格式为“dd-mm-yyyy”(例如 10-09-2008)时,Excel 将读取为“mm-dd-yyyy”(即 2008 年 10 月 9 日)。我尝试指定 NumberFormat
如下:
oSheet.Cells(x,y).NumberFormat = 'dd-mm-yyyy';
但是,没有任何效果。看来这只影响excel显示值的方式,而不影响解析。我现在唯一的解决方案是交换日期,例如:
var txt = cell.innerText;
if(/^(\d\d)-(\d\d)-\d\d\d\d$/.test(txt)) txt = txt.replace(/^(\d\d)-(\d\d)/,'$2-$1');
但是,我担心它不是通用的,不同的机器设置会失败。
有没有办法具体说明 Excel 如何解析输入值?
最佳答案
您可以通过使用 Excel 的 native “串行”日期格式输入数据来避免 Excel 的日期解析。例如,“2008 年 12 月 22 日”作为 Excel 序列日期是 39804。 (有关这些的详细解释,请参阅 here)
然后像之前一样设置单元格格式。
关于javascript - 通过javascript(activexobject)创建Excel单元格时如何自定义日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/380100/