2

我想在 C++/CLI 中使用 OpenXML 创建一个 .docx 文档(Word 2007 和 2010)

我使用此代码生成文档:

WordprocessingDocument^ wordDoc  = WordprocessingDocument::Create("C:\\...\MyFile.docx", WordprocessingDocumentType::Document);

MainDocumentPart^ mainPart = wordDoc->AddMainDocumentPart();

Document^ elt = gcnew Document( gcnew Body( gcnew Paragraph( gcnew Run( gcnew DocumentFormat::OpenXml::Wordprocessing::Text("Hello !") ) ) ) ); 

elt->Save(mainPart);

mainPart->Document->Save();

wordDoc->Close();

该文件已创建,但它是空的。

如果我用 C# 编写此代码,则该文件很好,并且包含文本

为什么我在 C++/cli 中的代码创建没有文本的文件 (MyFile.docx)?

4

1 回答 1

1

我重现了这个问题。不知道发生了什么,这种语法被记录在案。当您使用 AppendChild() 方法显式编写代码时,它可以正常工作。像这样:

WordprocessingDocument^ wordDoc  = WordprocessingDocument::Create("C:\\temp\\MyFile.docx", WordprocessingDocumentType::Document);
MainDocumentPart^ mainPart = wordDoc->AddMainDocumentPart();

mainPart->Document = gcnew Document;
Body^ body = mainPart->Document->AppendChild(gcnew Body);
Paragraph^ para = body->AppendChild(gcnew Paragraph);
Run^ run = para->AppendChild(gcnew Run);
run->AppendChild(gcnew DocumentFormat::OpenXml::Wordprocessing::Text("Hello !"));

delete wordDoc;
于 2012-10-05T12:33:01.913 回答