gpt4 book ai didi

javascript - 从 Excel 导出 XML 并保持日期格式

转载 作者:行者123 更新时间:2023-11-30 10:46:45 24 4
gpt4 key购买 nike

许多 StackOverflow 帖子和其他在线论坛都有与此类似的问题,但没有一个能真正解决我遇到的问题。

我正在从 Excel 导出 XML 文件。 Excel 文件包含日期。然而,在 XML 文件中,这些日期显示为整数——我相信日期是自 1/0/1900 以来的第 n 天。

我正在使用 JavaScript 从 XML 文件中提取数据以填充网页中的表格。

我怀疑解决方案可能有两种不同的形式:1. 一种在 JavaScript 中将整数转换为它表示的日期的方法。2. 一种强制 XML 文件从 Excel 文件中获取格式化日期的方法。

我显然是 XML 和 JavaScript 的新手,因此非常感谢您的帮助。谢谢。

最佳答案

Excel 用于 xml 导出的格式取决于添加的 XML 架构。这可以显式创建和添加,或者——正如我怀疑你的情况——已经由 Excel 隐式/自动生成

在我的示例中,我有两个列,第一个通过 XML-Schema 格式化日期时间,第二个是普通文本,仅用于在 Excel(列格式)中表示日期。

Screenshot of an excel-sheet with two columns both containing dates

当我将其导出为 XML 时,我得到两个看似完全不同的结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dataroot>
<Tabelle11>
<Title_1>2009-10-12T00:00:00.000</Title_1>
<Title_2>40098</Title_2>
</Tabelle11>
<Tabelle11>
<Title_1>2000-01-01T00:00:00.000</Title_1>
<Title_2>36526</Title_2>
</Tabelle11>
</dataroot>

当我检查 XML 模式时(例如使用“Debug.Print ActiveWorkbook.XmlMaps(1).Schemas(1).XML”)我看到了不同之处(只有片段,而不是完整的文件):

<xsd:element name="Title_1" minOccurs="0" od:jetType="datetime" od:sqlSType="datetime" type="xsd:dateTime">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="Format" type="10" value="dd.mm.yyyy"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="Title_2" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:annotation>
<xsd:appinfo>
<od:fieldProperty name="Format" type="10" value="@"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

第一列是日期时间格式的模式,第二列是varchar。同样,您甚至可能不知道 Excel 如何处理您的 XML 数据,因为该模式是自动生成的(如果我没记错的话,在 Excel 2003 中有一条消息表明已经为您生成了模式)

现在如何完成它——尤其是在现有文件中:我会尝试提取 XML-Schema(见上文),将其保存为 something.xsd,根据您的需要调整架构需要并导入这个新模式。糟糕的是你必须再次设置映射(或试试这个:Excel 2007 XML Source Maps - Refreshing Schemas)。我经常让 MS Access 生成我的 XML 架构,即生成所需的表,插入一些值并将表导出为 XML(勾选添加架构的选项)。

我希望这个大纲能给你一个关于如何继续的想法。

问候

安德烈亚斯

关于javascript - 从 Excel 导出 XML 并保持日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com