Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办相关的知识,希望对你有一定的参考价值。

Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办

参考技术A 一般情况,是你的xml映射文件有问题。

如果你的xml没有复杂的嵌套逻辑,如以下xml结构:
<root>
<element01></element01>
<element02></element02>
<element03></element03>
</root>
xml映射文件设置为:
<root>
<root>
<element01></element01>
<element02></element02>
<element03></element03>
</root>
<root>
<element01></element01>
<element02></element02>
<element03></element03>
</root>
</roots>

复杂的嵌套xml,目前我还试出来,ms官方给出的范例包括xml数据、xsd定义,在excel中导出的时候居然也报这个错误,有兴趣的同学可以研究下,发个结论。
http://msdn.microsoft.com/zh-cn/library/aa203737(v=office.11).aspx

将数据导出到 XML 以在 Excel 中打开

【中文标题】将数据导出到 XML 以在 Excel 中打开【英文标题】:Exporting data to XML to be opened in Excel 【发布时间】:2012-03-20 10:34:09 【问题描述】:

我有一个关于将数据保存到要由 Microsoft Excel 打开的 XML 文件的问题。我在 Visual C++ 中使用 MFC 构建了一个报表控件,并且我一直在使用简单的 CSV(逗号分隔值)文件将数据导出到 Excel。 CSV 方法运行良好,因为它在 Excel 上显示报告中的所有行和列。

然而,当必须保存每列的数据类型时,问题就出现了,因为 CSV 方法在导出数据时会忽略数据类型,因为一旦在 Excel 中打开,它将以字符串形式显示所有单元格。报告中单元格的数据类型很重要,因为一旦在 Excel 中导出(或打开),我的客户将对报告数据运行宏。

我希望使用 XML 来克服这个问题。是否可以使用 XML 保存数据类型,因为它提供格式和架构?您能否给我任何链接或任何指针,以允许自定义应用程序使用 XML 来保存要在 Excel 中打开的数据,同时保留数据类型?

提前致谢。

【问题讨论】:

抱歉,我的回答对你有用还是我跑题了? 【参考方案1】:

如果您在 Excel 中创建并打开这样的 XML 文件:

<rows>
  <row>
    <name>Name 1</name>
    <number>123.45</number>
    <date>2012-03-21</date>
  </row>
  <row>
    <name>Name 2</name>
    <number>678.01</number>
    <date>2012-03-22</date>
  </row>
</rows>

Excel 在自动识别数据类型方面做得很好——尽管 XML 没有关联的架构,但它会抱怨。

要将架构与 XML 关联,请创建 XML 架构文件 (rows.xsd):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="rows">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="row" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string"/>
              <xs:element name="number" type="xs:float"/>
              <xs:element name="date" type="xs:date"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

然后你在你的 XML 中引用它:

<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rows.xsd">
  <row>
    <name>Name 1</name>
    <number>123.45</number>
    <date>2012-03-21</date>
  </row>
  <row>
    <name>Name 2</name>
    <number>678.01</number>
    <date>2012-03-22</date>
  </row>
</rows>

在架构文件中,您可以指定数据的类型并描述您的结构 - 但您必须知道不重要的 XSD 语法。

另请参阅:http://support.microsoft.com/kb/827294(请注意,它说的是“XSL”,而应该说“XSD”)

【讨论】:

以上是关于Excel导出xml时提示“无法保存或者导出XML数据,此工作薄中XML映射不可导出(xml映射随便导的)请问怎么办的主要内容,如果未能解决你的问题,请参考以下文章

nodejs-xlsx导出的excel,office打开提示“发现不可读取的内容”?

Winform导出Excel数据时,像身份证这样的纯数字列如果要保存为字符串类型的,则导出Excel会有警告提示

解决导出Excel时提示“Warning: Maximum number of format records exceeded. Using default format”

Java 导出Excel的各种尝试

java POI 导出的Excel表打开时提示“ xxxx.xlsx 发现不可读取的内容 是不是恢复”

java导出excel,单元格的格式为下拉框。打开excel时,提示发现不可读取内容和已修复了公式和单元格值