如何使用XML模式将多个Excel行导出到XML文件?

我有一个Excel的工作表与汽车列表:

第1行包含车辆属性的列描述符

我创build了一个XML模式文档,允许我将工作表导出到XML。 模式如下:

<?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> <!--Below are the primary vehicle descriptors - essentially the attributes for the cars--> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 

在Excel中,我单击了开发人员>源代码> XML地图>添加,然后从上面select了XML模式文件并将其添加到我的工作表中。 我将XML Source窗口中的每个元素映射到Excel工作表中的相应列(“Brand”元素映射到A:A,“Model”元素映射到B:B等)。

在这里输入图像说明

当导出映射工作表(使用开发>导出,然后select一个目录和文件名)时,结果XML文件只有工作表中的第一行数据。 由于我的XML映射包含工作表的标题行,所以XML文件如下所示:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Root> <Brand>Brand</Brand> <Model>Model</Model> <Colour>Colour</Colour> <Price>Price</Price> </Root> 

我已经查看了许多不同的帮助页面,我不知道如何使我的XML文件存储Excel工作表的每一行(全部五个,包括标题行)。

你应该添加这个地方:

 minOccurs="0" maxOccurs="unbounded" 

告诉excel你的元素可能会出现好几次。

但是你不能在“根”元素中添加它。

尝试这个:

 <?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 name="Car" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 

我没有使用J.Doe的答案,但我认为这是正确的,因为它与我最终做的相似。 链接原始XML模式时:

 <?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> <!--Below are the primary vehicle descriptors - essentially the attributes for the cars--> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 

Excel假定表单中只有一条logging。 解决scheme是在我的模式中创build第二个复杂元素(除了名为“Root”的元素),其中包含> 1我的根元素。 结果文件如下所示:

 <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Car_Table"> <xsd:complexType> <xsd:sequence> <xsd:element ref="Root" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Root"> <xsd:complexType> <xsd:sequence> <!--Below are the primary vehicle descriptors - essentially the attributes for the cars--> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 

当使用开发人员>源代码> XML地图>添加添加架构时,您将得到如下提示:

显示根选择的窗口

select引用其他元素的元素(因为这允许recursion)。 在XML源代码面板中,地图将如下所示:

允许递归导出到XML文件的Schema源码

然后,您可以将架构中的每个元素(品牌,型号,颜色,价格)映射到工作表中的相应列。 一旦架构映射到工作表,您的数据将如下所示:

成功映射模式之后,工作表中的数据

然后,您可以通过转到开发人员>导出将数据导出到XML。 在使用导出对话框select一个文件名和目录之后,生成的XML文件应该如下所示:

汽车表单中的数据以XML格式

这是使用Excel 2010完成的,其他版本会有所不同。

对我而言,简单地编辑架构并为每个实体分配多个条目。 所以在你的情况下:

 <?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> <!--Below are the primary vehicle descriptors - essentially the attributes for the cars--> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Brand" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Model" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Colour" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> <xsd:element name="Price" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> 

只需要为每个input两个条目,这允许多个条目被导出。