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 に答える