如何将excel中的简单重复数据导出为xml?

时间:2010-11-23 14:13:09

标签: xml excel xsd excel-2007

我正在尝试使用Excel 2007 XML Developers工具,但我无法导出一组简单的重复数据。

我有一个包含标题和数据列的工作表。

我有一个xsd描述(我认为)数据的地图,第一个元素重复。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/FeedbackLookup.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="FeedbackLookup">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="RevieweeInfo" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="RevieweeName" type="xs:string">
              </xs:element>
              <xs:element name="RevieweeTitle" type="xs:string">
              </xs:element>
              <xs:element name="ReviewLevel" type="xs:string">
              </xs:element>
              <xs:element name="RecipientName" type="xs:string" />
              <xs:element name="RecipientEmail" type="xs:string" />
              <xs:element name="RecipientTitle" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

并将其映射到我的xml文件中的标题。

Excel XML Pane

但是当我点击Verify Map for Export时,我会收到以下错误:

A mapped element's relationship with other elements cannot be preserved

元素都映射到同一页面,并且都是常规数据列。

Excel Header Row

我做错了什么?在这一点上,编写天真的VBA以创建XML会更快吗?

3 个答案:

答案 0 :(得分:2)

我不确定这是否符合答案......但是你的xsd对我来说还算可行。

这是导出的xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:FeedbackLookup xmlns:ns1="http://tempuri.org/FeedbackLookup.xsd">
    <ns1:RevieweeInfo>
        <ns1:RevieweeName>1</ns1:RevieweeName>
        <ns1:RevieweeTitle>1</ns1:RevieweeTitle>
        <ns1:ReviewLevel>1</ns1:ReviewLevel>
        <ns1:RecipientName>1</ns1:RecipientName>
        <ns1:RecipientEmail>1</ns1:RecipientEmail>
        <ns1:RecipientTitle>1</ns1:RecipientTitle>
    </ns1:RevieweeInfo>
    <ns1:RevieweeInfo>
        <ns1:RevieweeName>2</ns1:RevieweeName>
        <ns1:RevieweeTitle>2</ns1:RevieweeTitle>
        <ns1:ReviewLevel>2</ns1:ReviewLevel>
        <ns1:RecipientName>2</ns1:RecipientName>
        <ns1:RecipientEmail>2</ns1:RecipientEmail>
        <ns1:RecipientTitle>2</ns1:RecipientTitle>
    </ns1:RevieweeInfo>
</ns1:FeedbackLookup>

编辑屏幕截图

alt text

答案 1 :(得分:0)

根据@ Petoj的评论,尝试将ns2:RevieweeInfo元素拖到工作表上,而不是单独拖动每个字段。

这为我解决了这个问题,但我必须首先创建一个单独的工作表,其中只包含与目标元素属性相匹配的列。

答案 2 :(得分:0)

查看此博客的相同错误。

http://itbadass.blogspot.com/2010/11/converting-excel-to-xml-mapped-elements.html

看起来它可能是Excel&#34;没有看到&#34;它需要的所有数据。他的解决方案是将数据文件保存为CSV,然后打开它并再次尝试导入。我可以看到这样做的主要优点是剥离任何表格格式或可能绊倒Excel的时髦数据类型。

我还必须将我的数据放在列中,并确保我将元素图标拖到列的第一行数据(而不是列名),以使我的映射正确。