OpenXML С++/cli

Я хочу создать документ .docx (Word 2007 и 2010) с OpenXML в C++/CLI

Я использую этот код для создания документа:

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) без текста?


person wanton    schedule 05.10.2012    source источник


Ответы (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;
person Hans Passant    schedule 05.10.2012
comment
этот код работает! Я не понимаю, почему первый код не работает. Большое тебе спасибо ! - person wanton; 05.10.2012