首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过javascript (activexobject)创建excel单元格时自定义日期格式?

如何通过javascript (activexobject)创建excel单元格时自定义日期格式?
EN

Stack Overflow用户
提问于 2008-12-19 12:26:04
回答 5查看 10.8K关注 0票数 1

我正在尝试使用新的ActiveXObject("Excel.application")在Javascript中将HTML表转换为Excel。基本上,我循环遍历表格单元格,并将值插入到excel中的相应单元格中:

代码语言:javascript
复制
//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,如下所示:

代码语言:javascript
复制
oSheet.Cells(x,y).NumberFormat = 'dd-mm-yyyy';

但是,它没有任何效果。这似乎只影响excel 如何显示值,而不影响解析。我现在唯一的解决方案是交换日期,如下所示:

代码语言:javascript
复制
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 是如何解析输入值的?

EN

回答 5

Stack Overflow用户

发布于 2008-12-19 05:08:46

在Vbscript中,我们使用通过以下方式解决此问题

代码语言:javascript
复制
    If IsDate ( Cell.Value ) Then
         Cell.Value = DateValue ( Cell.Value )
    End If

也许,在java脚本中,你也需要使用同样的方法。

票数 0
EN

Stack Overflow用户

发布于 2008-12-22 16:16:55

您可以通过使用Excel原生的“串行”日期格式输入数据来避免Excel的日期解析。例如,‘22 12月08’是39804作为Excel序列日期。(有关这些的详细解释,请参阅here )

然后像之前一样格式化单元格。

票数 0
EN

Stack Overflow用户

发布于 2010-10-28 01:06:52

  1. 确定excel支持的非区域性日期格式
  2. 使用javascript解析日期字符串并以适当的格式输出

我不知道excel支持什么格式,但你会想要像.net's round trip or sortable formats这样的格式,它总是被一致地读取。

对于#2,如果您可以信任javascript从您提供给它的任何字符串构造一个适当的日期,这是很好的。如果您不确定这一点,您可以看看像datejs这样的库,在那里您可以更具体地说明您想要发生的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/380100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档