我正在尝试使用新的ActiveXObject("Excel.application")
在Javascript中将HTML表转换为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 是如何解析输入值的?
发布于 2008-12-18 21:08:46
在Vbscript中,我们使用通过以下方式解决此问题
If IsDate ( Cell.Value ) Then
Cell.Value = DateValue ( Cell.Value )
End If
也许,在java脚本中,你也需要使用同样的方法。
发布于 2008-12-22 08:16:55
您可以通过使用Excel原生的“串行”日期格式输入数据来避免Excel的日期解析。例如,‘22 12月08’是39804作为Excel序列日期。(有关这些的详细解释,请参阅here )
然后像之前一样格式化单元格。
发布于 2010-10-27 17:06:52
。
我不知道excel支持什么格式,但你会想要像.net's round trip or sortable formats这样的格式,它总是被一致地读取。
对于#2,如果您可以信任javascript从您提供给它的任何字符串构造一个适当的日期,这是很好的。如果您不确定这一点,您可以看看像datejs这样的库,在那里您可以更具体地说明您想要发生的事情。
https://stackoverflow.com/questions/380100
复制相似问题