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

C# 使用OpenXML 2.5创建.docx会导致文件损坏,c#,ms-word,openxml-sdk,corruption,C#,Ms Word,Openxml Sdk,Corruption,我正在尝试使用OpenXML 2.5 SDK创建一个文档,如下所述: 我的代码看起来与此相同,但当我尝试打开创建的.docx文件时 无法打开DocumentEx.docx文件,因为内容有问题 作为Microsoft Word中的一个错误 问题出在document.xml文件中,该文件类似于: <?xml version="1.0" encoding="utf-8"?> <w:document xmlns:w="http://schemas.openxmlfor

我正在尝试使用OpenXML 2.5 SDK创建一个文档,如下所述:

我的代码看起来与此相同,但当我尝试打开创建的.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>

你好,Word!
如果将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>

你好,Word!
文件将打开

如何使其不另存为已损坏?我从MSDN中提取的代码中出现这样的错误,我一定是遗漏了一些大的东西

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


提前感谢。

这可能是因为缺少许多标题。 下面的代码确实解决了这个问题。我用过office 2010

 <w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
    <w:body>
    <w:p>
    <w:r>
    <w:t>Hello , word</w:t>
    </w:r>
    </w:p>
    <w:sectPr>
    <w:pgSz w:w="12240" w:h="15840"/>
    <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
    <w:cols w:space="708"/>
    <w:docGrid w:linePitch="360"/>
    </w:sectPr>
    </w:body>
    </w:document>

你好,word

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


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

drawingml似乎不太可能有,其结构与wordprocessingml相同。如何在Word文档中获得名称空间,共享代码?如果您是正确的。经过进一步调查,这是我的错误。我使用DocumentFormat.OpenXML.Drawing作为添加文本的名称空间,而不是DocumentFormat.OpenXML.Wordprocessing。非常感谢您的帮助。这是因为您可能错过了许多依赖的内容。请检查您的[content\u types].XML。问题是我正在尝试以后不必手动操作XML。我希望这个过程是程序化的。