OpenXML C++/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) без текста?
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;