Excel 2010导出XML时无法使用嵌套元素的问题咨询
Excel XML导出嵌套Process元素失败的解决方案
问题核心分析
你遇到的错误「Cannot save or export XML data. The XML maps in this workbook are not exportable.」,根源出在你提供的XSD结构上——Excel的XML映射对xs:choice的支持非常有限,而你当前的XSD用了<xs:choice>来包裹Name和Process元素,这会让Excel认为这两个元素是二选一的关系,而非可以同时存在的嵌套结构,自然无法导出你需要的同时包含Name和多个Process的XML。
另外注意你给出的目标XML里有个小笔误:第一个</ProcessInput>应该是</Process>,修正后才是合法的结构。
修正后的XSD结构
把xs:choice替换为xs:sequence,明确Formula元素是按顺序包含Name和可重复的Process元素,这样Excel就能正确识别嵌套结构了:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Formula"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Process" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Ing" type="xs:string"/> <xs:element name="ReqAmount" type="xs:double"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Excel导出操作步骤
- 删除Excel中原有的XML映射,重新导入上面修正后的XSD文件
- 在XML映射窗格中,将
Formula映射到工作表的空白单元格,Name映射到对应的单元格 - 右键点击
Process元素,选择重复,这样Excel会创建可扩展的行来支持多个Process条目 - 填入数据后,尝试导出XML,就能得到你需要的嵌套结构了
关键注意点
- Excel的XML映射不支持大部分复杂的XMLSchema结构(比如
xs:choice、xs:any等),尽量用xs:sequence或xs:all(all要求元素无顺序,但同样支持多个元素共存)来定义结构 - 对于需要重复的元素,必须手动设置「重复」,否则Excel只会映射单个实例
内容的提问来源于stack exchange,提问作者Maggie
相关产品推荐
相关产品推荐

