кто что использует при создании отчетов под Lazarus?
Модератор: Модераторы
-
RusDeveloper
- новенький
- Сообщения: 92
- Зарегистрирован: 06.04.2016 11:02:43
кто что использует при создании отчетов под Lazarus?
кто что использует и какие впечатления? приветствуется описание достоинств и недостатков генераторов отчетов, например, таких как FastReport, LazReport, FlexCel и т.д. и т.п.
Собственный велокостыль.
Экспортирую в LibreOffice с помощью LibreOffice Basic.
1. Софтина на лазарусе формирует файл с данными (CSV).
2. Софтина запускает LibreOffice (безголовый, невидимый).
3. Макрос в LibreOffice читает заданный файл и подставляет строки в предварительно созданный и отформатированный шаблон, формируя красивый документ.
4. По окончании работы офиса - софтина показывает юзеру готовую ODS-ку.
Плюсы:
1. Кроссплатформенность (в данный момент используется на Ubuntu/WinXP/Win7).
2. Формирование шаблона стандартными средствами офиса в самом офисе. Быстрая и удобная корректировка шаблона. Возможность корректировки шаблона даже пользователем (хоть и не любым).
3. После формирования ODS-ки пользователь по необходимости может её поправить немножко (или множко).
4. LibreOffice Basic даёт полный доступ ко всему функционалу LibreOffice (любое форматирование, диаграммы, рисование...).
Минусы:
1. Длительное формирование.
2. Очевидно, без установленного офиса не будет работать (может работать с portable-версией, но будет ещё тормознее).
3. LibreOffice Basic это не LazReport - все действия по формированию строк с данными приходится программировать самостоятельно.
4. Разрыв мозга от всего этого творчества.
Но лучше ничего пока не придумал, с LazReport-ом мучался довольно долго - он так и не смог удовлетворить всем моим требованиям.
1. Софтина на лазарусе формирует файл с данными (CSV).
2. Софтина запускает LibreOffice (безголовый, невидимый).
3. Макрос в LibreOffice читает заданный файл и подставляет строки в предварительно созданный и отформатированный шаблон, формируя красивый документ.
4. По окончании работы офиса - софтина показывает юзеру готовую ODS-ку.
Плюсы:
1. Кроссплатформенность (в данный момент используется на Ubuntu/WinXP/Win7).
2. Формирование шаблона стандартными средствами офиса в самом офисе. Быстрая и удобная корректировка шаблона. Возможность корректировки шаблона даже пользователем (хоть и не любым).
3. После формирования ODS-ки пользователь по необходимости может её поправить немножко (или множко).
4. LibreOffice Basic даёт полный доступ ко всему функционалу LibreOffice (любое форматирование, диаграммы, рисование...).
Минусы:
1. Длительное формирование.
2. Очевидно, без установленного офиса не будет работать (может работать с portable-версией, но будет ещё тормознее).
3. LibreOffice Basic это не LazReport - все действия по формированию строк с данными приходится программировать самостоятельно.
4. Разрыв мозга от всего этого творчества.
-
RusDeveloper
- новенький
- Сообщения: 92
- Зарегистрирован: 06.04.2016 11:02:43
а готовых компонентов для формирования отчетов в OpenOffice нет? чтобы кинуть на форму компонент, в OpenOffice накидать шаблон отчета и вуаля: отчет готов. нет такого для Лазаруса?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
RusDeveloper, есть компонент работы с опен/либре офисом, по идее, никто не мешает использовать его. У меня практикант и в экселе программно файл формировал на лету. По сути, получался тот же отчет.
Лекс Айрин писал(а):У меня практикант и в экселе программно файл формировал на лету.
В MS Excel - это значит "только винды".
Лекс Айрин писал(а):есть компонент работы с опен/либре офисом
Не поделитесь опытом какой?
Сколько я пробовал - либо OLE (т.е. опять же - "только винды"), либо не работают/заброшены.
можно и не только - fpspreadsheet.В MS Excel - это значит "только винды"
есть. Только не визуальные. Даже тут, на форуме.а готовых компонентов для формирования отчетов в OpenOffice нет?
Так же, вроде как и в ворд есть - fpvectorial (http://wiki.lazarus.freepascal.org/fpvectorial_-_Text_Document_Support).
п.с.
Было бы желание искать/делать...
Хм... FlexCel вроде встречал порт для лазаря.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
rayanAyar да на форуме светился, насколько я помню, только один компонент -- viewtopic.php?f=24&t=7297 если найдешь что-то еще, то рад бы посмотреть.
а насчет Оли... ему это подходило.
а насчет Оли... ему это подходило.
Пишу отчёты через OpenOffice
Качаем, далее:
"Сервис" -> "Преобразование кода на Delphi" -> "Преобразовать проект Delphi в проект Lazarus..." - > OpenOfficeTest.dpr
Игнорируем отсутствующий модуль stdVCL.
Затем запускаем на исполнение и вычищаем косяки.
По кругу: Ctrl-F9 - замена:
1. Заменяем все .String на .AsString
2. Всякие такие штуки, типа
FTableObj.BreakType:=Value; меняем на FTableObj.BreakType:=Ord(Value);
SF.Location:=Value.Location; меняем на SF.Location:=Ord(Value.Location);
ParentSheetObj.InsertCells(TCRA,Mode); меняем на ParentSheetObj.InsertCells(TCRA,Ord(Mode));
и т.д. пока не закончатся ошибки в модуле uOpenOffice.
Потом в проекте uMain, который мы преобразовывали, полезут ошибки, но это нам пофиг.
Главное, подогнан под Lazarus модуль uOpenOffice.
В своём проекте даём путь к модулю и работаем со всей мощью OpenOffice.
Код: Выделить всё
//******************************************************************************
//* Written by Yuri (aka Yuric74) *
//* http://www.sql.ru/forum/actualthread.aspx?tid=405083 *
//* all version at http://yuri.elmeh.ru *
//******************************************************************************
unit uOpenOffice;
Качаем, далее:
"Сервис" -> "Преобразование кода на Delphi" -> "Преобразовать проект Delphi в проект Lazarus..." - > OpenOfficeTest.dpr
Игнорируем отсутствующий модуль stdVCL.
Затем запускаем на исполнение и вычищаем косяки.
По кругу: Ctrl-F9 - замена:
1. Заменяем все .String на .AsString
2. Всякие такие штуки, типа
FTableObj.BreakType:=Value; меняем на FTableObj.BreakType:=Ord(Value);
SF.Location:=Value.Location; меняем на SF.Location:=Ord(Value.Location);
ParentSheetObj.InsertCells(TCRA,Mode); меняем на ParentSheetObj.InsertCells(TCRA,Ord(Mode));
и т.д. пока не закончатся ошибки в модуле uOpenOffice.
Потом в проекте uMain, который мы преобразовывали, полезут ошибки, но это нам пофиг.
Главное, подогнан под Lazarus модуль uOpenOffice.
В своём проекте даём путь к модулю и работаем со всей мощью OpenOffice.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik писал(а):fpvectorial
pupsik писал(а):fpspreadsheet.
sign писал(а):uOpenOffice
Пробовал. Слабовато.
По-определению не может быть полностью функционально, так как это самостоятельные генераторы - они не используют офис. А полностью весь офис не перепишешь.
Кроме того они не универсальны - ни у одного нет поддержки и ODT и ODS (а мне нужны оба типа документов).
И fpvectorial это немного другое, насколько я понимаю. Он ведь не может генерировать офисные документы?
В идеале нужен UNO Bridge с паскаля (как OLE, только кроссплатформенный протокол). Я где-то даже находил такой модуль. Но заставить его работать не смог. И авторами проект заброшен.
rayanAyar писал(а):sign писал(а):uOpenOffice
Пробовал. Слабовато.
По-определению не может быть полностью функционально, так как это самостоятельные генераторы - они не используют офис. А полностью весь офис не перепишешь.
Кроме того они не универсальны - ни у одного нет поддержки и ODT и ODS (а мне нужны оба типа документов).
uOpenOffice не генератор.
Вы невнимательны, или путаете с другим пакетом.
Вот вам одна из процедур, по которой всё ясно:
Код: Выделить всё
procedure TOpenOffice.SetConnect(const Value: Boolean);
var
SM: Variant;
begin
if Value then
begin
try
SM:=CreateOleObject('com.sun.star.ServiceManager');
if (VarType(SM)=varDispatch) then
FDesktop:=SM.CreateInstance('com.sun.star.frame.Desktop');
except
FDesktop:=Unassigned;
end;
end
else
begin
FreeVariants;
end;
SM:=Unassigned;
end;
Заметили строку - CreateOleObject('com.sun.star.ServiceManager')?
Надеюсь, что смысл вам понятен.
Пакет, на который я ссылаюсь, как раз использует всю мощь офиса!
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
А почему не PDF ? (у духе PHPшнго TCPDF).
Заточен под печать, платформенно-независим, шрифты можно встраивать прямо в документ. Эти шрифты можно сделать маленькими (15..20к Байт), если отсеять только нужный набор символов юникода. Итого получаем размер файла отчета 20+ КБайт.
Заточен под печать, платформенно-независим, шрифты можно встраивать прямо в документ. Эти шрифты можно сделать маленькими (15..20к Байт), если отсеять только нужный набор символов юникода. Итого получаем размер файла отчета 20+ КБайт.
Тогда берите блокнотик и вперед писать свое "сильное".Пробовал. Слабовато.
в винде...Пакет, на который я ссылаюсь, как раз использует всю мощь офиса!
да не..е, это вообще слабо.А почему не PDF ?
debi12345 это ещё слабее 
