动态生成的 Excel Xml(通过 OpenXml)在其所有标签中都有一个 x:

Dynamically generated Excel Xml (thru OpenXml) has a x: in all of its tags

所以,我在一个空工作簿(已经建立了数据连接)上动态创建了一个数据透视表,并成功保存:文档甚至成功打开,为什么 Excel GUI:一切似乎都正确并且工作正常。

当我查看包裹内部时,我发现 Xml 标签有一个 extar x:,就像 workbook.xml 就像下面这样;

<x:pivotCaches>
    <x:pivotCache cacheId=”1″ r:id=”rId4″ />
</x:pivotCaches>

有人知道为什么我们有这个额外的 x: 吗?它仅在我将 pivotCaches 标记添加到 workbook.xml 后发生。我正在使用 OpenXml 2.7.1

x: 前缀称为 XML Namespace。您还必须在 XML 文件中看到一个 xmlns:x 属性,指示如何解析此命名空间的架构。

x:pivotCaches 中的 x 是一个 XML 命名空间前缀.

要使 XML 成为 namespace-well-formed,必须有一个声明将命名空间前缀 x 与命名空间 URI 绑定,例如 http://schemas.openxmlformats.org/spreadsheetml/2006/main .您的 XML 片段目前的命名空间格式不正确,因为它使用了未声明的 XML 命名空间前缀。

命名空间前缀可以在其使用祖先的任何位置或更高级别声明:

<x:pivotCaches xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <x:pivotCache cacheId=”1″ r:id=”rId4″ />
</x:pivotCaches>

如果改为声明默认的 XML 命名空间,则可以省略命名空间前缀:

<pivotCaches xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <pivotCache cacheId=”1″ r:id=”rId4″ />
</pivotCaches>

另见