Планирую создать отдельную тему с разборкой причин и следствий некорректного вывода в htm в Lazreporte . Но это потом. А пока замечание по выводу в Word. Текст сначала присваивается переменной widestring, с конвертацией в текущую кодировку из кодировки lazarusa- utf8, и только потом корректно отображается в Word. Вот пример присвоения ячейке таблицы-
- Код: Выделить всё
str:=utf8decode('Наименование');
wdTable.Cell(1,2).Range.Text :=str;
. То же самое с выводом из полей StringGrid или из SQLQuery. Сначала в переменную, а потом только в Word. В Delphi попроще, там не utf8.
Добавлено спустя 23 часа 44 минуты 30 секунд:При работе с закладками в LibreOffice выяснил, что народ может довести своим "копи-пясте" до истерики. Доступ к закладке предлагается такой
- Код: Выделить всё
Bookmark:=BookmarksSupplier.getByName(BookmarksName).getAnchor;
Bookmark.setString(MyText);
Причем если не найдется, то получите exception. И это предлагается на полном серьезе. У меня в цикле этих исключений будет пол сотни, я бы предпочел иметь список закладок и его перебирать, а такого примера не мог найти в инете течение 3 часов. И только один ресурс оказался более толковым-
https://www.winsoft.sk/libre.htm Рекомендую.
Добавлено спустя 57 минут 18 секунд:А вот и код рожденный по подсказке этого ресурса
- Код: Выделить всё
BookmarksSupplier:=Document.getBookmarks
ElementNames := BookmarksSupplier.getElementNames;
for k:=0 to Document.Bookmarks.count-1 do
begin
str:='my_'+ElementNames[k];
Bookmark:=BookmarksSupplier.getByName(ElementNames[k]).getAnchor;
Bookmark.setString(str);
end;
То есть мы получаем массив имен закладок и уже работаем с элементом массива и никаких exception

Код выводит в местах закладок имя закладки с префиксом my_ .
Добавлено спустя 5 минут 31 секунду:К сведению, поиск в инете (ради интереса) по "BookmarksSupplier.getElementNames" не дал нормальной консультации (типа статьи какого нить гуру).