使用 OpenXML 2.5 创建 .docx 会导致文件损坏

Kyl*_*yle 3 c# ms-word corruption openxml-sdk

我正在尝试使用 OpenXML 2.5 SDK 创建一个文档,详细信息如下:

https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.document.aspx

我的代码看起来与此相同,但是当我尝试打开创建的 .docx 文件时,我得到

无法打开文件 DocumentEx.docx,因为内容有问题。

作为 Microsoft Word 中的错误

问题出在 document.xml 文件中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
    <w:document     xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
        <w:body>
            <a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
                <a:r>
                    <a:t>Hello, Word!</a:t>
                </a:r>
            </a:p>
        </w:body>
    </w:document>
Run Code Online (Sandbox Code Playgroud)

如果我将 XML 更改为:

<?xml version="1.0" encoding="utf-8"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:r>
        <w:t>Hello, Word!</w:t>
      </w:r>
    </w:p>
  </w:body>
</w:document>
Run Code Online (Sandbox Code Playgroud)

文件将打开。

我怎样才能使它不保存为损坏的?我一定是错过了一些大的东西,才会从 MSDN 中提取的代码中出现这样的错误。

我正在 Visual Studio 2010、.NET Framework v 4.6 SP1 中进行开发,并尝试使用 Microsoft Word 2010 打开这些 .docx 文件。

先感谢您。

Kyl*_*yle 5

我的问题是我添加的对象的命名空间不正确。

我使用 DocumentFormat.OpenXML.Drawing 作为我的 Text 对象,而不是 DocumentFormat.OpenXML.Wordprocessing。这没有正确渲染文本并导致我的错误。