Я пытаюсь заменить закладку в docx текстом в c++\cli, используя концепцию open xml SDK. Приведенный ниже фрагмент кода извлекает закладки из документа Word и проверяет, соответствует ли закладка строке «ВЕРСИЯ», если это правда, она заменяется строкой «0000» в файле docx.
Paragraph ^paragraph = gcnew Paragraph();
Run ^run = gcnew Run();
DocumentFormat::OpenXml::Wordprocessing::Text^ text = gcnew DocumentFormat::OpenXml::Wordprocessing::Text(“0000”);
run->AppendChild(text);
paragraph->AppendChild(run);
IDictionary<String^, BookmarkStart^> ^bookmarkMap =
gcnew Dictionary<String^, BookmarkStart^>();
for each (BookmarkStart ^bookmarkStart in
GlobalObjects::wordDoc->MainDocumentPart->RootElement->Descendants<BookmarkStart^>())
{
if (bookmarkStart->Name->Value == “VERSION”)
{
bookmarkStart->Parent->InsertAt<Paragraph^>(paragraph,3);
}
}
Приведенный выше код отлично работает в большинстве сценариев (куда бы мы ни вставляли закладки), но иногда он дает сбой, и я не могу найти причину. А если закладку вставить в начальную позицию строки, то после выполнения я не смогу открыть файл docx, будут какие-то ошибки. Я попытался указать значение индекса как 0 для метода InserAt, даже если это не работает.
Пожалуйста, предоставьте решение для вышеуказанного.
заранее спасибо