Замена закладок в документе MS Word 2010 приводит к потере форматирования

Я создал документ MS Word с некоторыми закладками, которые хочу заменить во время выполнения некоторым текстом, извлеченным из базы данных.
Первоначально это приложение использовало OLE-автоматизацию (Word) для выполнения подобных задач, но затем мне пришлось решил найти альтернативу.
Я скачал и использовал Open Office SDK (последний выпуск) и реализовал простой проект.

// Opens a MS Word document 
XComponent document = OpenDocument("Test.docx", "_blank", true);
XNameAccess xna = ((XBookmarksSupplier) document).getBookmarks();
string[] documentBookMarkKeys = xna.getElementNames();

if (documentBookMarkKeys.Length > 0) {
    uno.Any currentBookmark = xna.getByName("bookmark1");
    XTextContent bookmarkContent = currentBookmark.Value as XTextContent;

    if (bookmarkContent != null) {
        XTextRange xFound = bookmarkContent.getAnchor();
        xFound.setString("Some text here!");
    }
}

Эта простая подпрограмма, которую я собрал, пытаясь получить некоторый код, найденный в Интернете, кажется, работает нормально, но не сохраняет форматирование этих закладок. Я не знаю, есть ли другие альтернативы для достижения того же результата. Я делаю что-то неправильно?

Я использую Open Office 3.4 через UNO.


person LeftyX    schedule 16.07.2012    source источник
comment
Можете ли вы попробовать получить форматирование из закладки и явно установить это форматирование для замененного текста?   -  person Moshe Katz    schedule 16.07.2012
comment
@MosheKatz: спасибо за помощь. Хотел бы я знать, как это сделать? Я борюсь с документацией, но я не могу понять это.   -  person LeftyX    schedule 16.07.2012


Ответы (2)


Если ваша цель состоит в том, чтобы сохранить документ в формате Microsoft Word, возможно, вам придется скорректировать свой подход. Насколько я понимаю, OpenOffice не сохранит все метаданные, связанные с исходным документом, т.е. в моем опыте поля данных из документа MS Word будут скопированы только в текст, а ссылка на исходный источник данных/поле данных будет потеряна. Я предполагаю, что то же самое может произойти с закладками, и только потому, что 2 продукта поддерживают закладки, может случиться так, что использование OO для управления Word приведет к потере базовой ссылки. Вы можете доказать это, попробовав это вручную, т. е. изменить свой .docx с помощью OO, просто чтобы увидеть, получите ли вы при сохранении измененного документа требуемый результат.

person Jezza    schedule 17.07.2012

Я просто удалил и заново создал закладки, и теперь все работает нормально.

person LeftyX    schedule 31.08.2012