我遇到了一个excel XML导出问题.为了简化问题,我会执行以下步骤:
1.Data >>来自XML数据导入.
实际上,我想在对数据进行一些修改后再次将其导出回XML文件(那些第一行变量永远不会改变)
2.然后点击开发>>导出.它显示"无法保存或导出XML数据.此工作簿中的XML映射不可导出".(即使我对数据没有任何修改).我已经在YouTube上看了几个导出教程视频,但似乎没有解决我的问题.我还没有发现问题.
通常的原因是Excel不了解非常复杂的XML.
如果无法保留映射元素与其他元素的关系,则无法导出XML映射.由于以下原因,可能无法保留此关系:
映射元素的模式定义包含在具有以下属性的序列中:
- maxoccurs属性不等于1.
- 该序列定义了多个直接子元素,或者将另一个合成器作为直接子元素.
- 具有相同重复父元素的非重复同级元素将映射到不同的XML表.
- 多个重复元素映射到同一个XML表,并且重复不是由祖先元素定义的.
- 来自不同父项的子元素映射到同一XML表.
此外,如果XML映射包含以下XML架构构造之一,则无法导出XML映射:
清单清单
- 一个项目列表包含第二个项目列表.
非规范化数据
- XML表包含在模式中定义的元素,该元素出现一次(maxoccurs属性设置为1).将此类元素添加到XML表时,Excel会使用该元素的多个实例填充表列.
选择
- 映射元素是模式构造的一部分.
就我而言,我想将一个简单的表导出为 xml 文件,而不需要先前存在的 xsd 或 xml 文件。所以我这样做了
我在编辑器中编写了以下 xsd 并将其保存到文件中
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Root">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="Sample_XML_Export">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Foo" type="xsd:int"/>
<xsd:element name="Bar" type="xsd:string"/>
<xsd:element name="Baz" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)
必须将此 xsd 文件导入到 Excel 中。您需要激活 Excel 中的开发人员选项卡。在此选项卡上,您可以从 XML 源导入(请参阅按钮“XML...”)。
导入 xsd 文件后,您将看到树形结构(请参阅文件夹
Root和Sample_XML_Export)。
现在您需要将下面的节点Sample_XML_Export与 Excel 列相关联。选择一个节点并右键单击它以将该节点映射到列
现在,通过单击列标题选择要映射/与节点相关的列。
在文件/另存为或导出下,您可以将 xls 文件另存为 xml 文件。这是导出的xml数据
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<Sample_XML_Export>
<Foo>1234</Foo>
<Bar>122</Bar>
<Baz>12</Baz>
</Sample_XML_Export>
<Sample_XML_Export>
<Foo>4567</Foo>
<Bar>144</Bar>
<Baz>13</Baz>
</Sample_XML_Export>
<Sample_XML_Export>
<Foo>7890</Foo>
<Bar>187</Bar>
<Baz>14</Baz>
</Sample_XML_Export>
</Root>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60460 次 |
| 最近记录: |