Я создал документ 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.