Страница 3 из 6
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 13:40
George
Игорь Столяров писал(а): ↑30 Март 2024, 13:33
Чем больше функционала реализовано в прикладной программе без привлечения внешних компонент - тем лучше.
Но выбор реализации через стороннюю коммерческую библиотеку, вместо бесплатного офисного пакета не так уж и очевиден.
Опыт показывает, что Open Source проекты более стабильны и последовательны в своём развитии, чем стартапы
где несколько человек пытаются платить ипотеку с одной DLL.
В идеале согласен, только где такой Open Source по данной теме, который бы удовлетворял всем моих "хотелкам"?
Искал долго - не нашел к сожалению!
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 13:43
George
finsoftrz писал(а): ↑30 Март 2024, 13:02
Я не очень понимаю в принципе, зачем надо уйти от использования офисных пакетов, при этом формируя отчеты в их формат? Понимаю задачи формировать быстро и без привязки к конкретному офисному пакету. В первую очередь подразумевается от привязки к Excel, который платный. Причем сейчас легальность Excel еще меньше принципиальна, чем раньше.
Этот Вы обсудите с Банком России и подчиненными кредитными организациями.
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 13:51
finsoftrz
Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов?
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 13:53
Губин Игорь
finsoftrz писал(а): ↑30 Март 2024, 12:55
Я делаю шаблон в Calc, затем распаковываю архив и скриптом на vbscript вытаскиваю нужную для формирования отчета информацию из xml таблиц, сохраняю в промежуточный текстовый файл (препроцессинг). Этот текстовый файл и используется при формировании отчета. Шаблоны меняются редко, и для формирования xlsx по шаблону ничего стороннего не нужно.
Однако... "мы всё так делаем"
Ничего личного, но перебор.
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 13:59
Губин Игорь
finsoftrz писал(а): ↑30 Март 2024, 13:51
Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов?
Я бы поверил... Имея дело с госструктурами и не на такое наткнёшься.
Мы бодались с одной конторой, которая мало того, что требовала отчёты в docx (по конкретному файлу-шаблону), это ещё куда ни шло, но и проверяла их в автоматическом режиме, отбрасывая все, которые не созданы
конкретной версией ворда.
При этом истерику ("почему не принимают отчёт?!") закатывали именно мне, который ну совершенно не при чём (пришлось разбираться
)
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 14:06
Игорь Столяров
Губин Игорь писал(а): ↑30 Март 2024, 13:59
отбрасывая все, которые не созданы конкретной версией ворда
Такое бывает ...
Везде свои "внутренние стандарты" ! Сидит человек в конторе, и уже ничего не хочет делать до пенсии.
Мы делали отчётность по продажам через XLSXWriter и директор поставщика с нами свзывался, т.к. их системный архитектор
(именно так он себя сам называл !) утверждал, что такое сделать в XLSX ну в принципе невозможно ...
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 14:10
George
finsoftrz писал(а): ↑30 Март 2024, 13:51
Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов?
Не совсем так, офисные пакеты использовать можно
.
Правда, только те, которые подходят по импортозамещению - по крайней мере, банки готовятся по полной к данному моменту.
Здесь и Linux (Astra Linux, ALT Linux и другие) и офисные пакеты (Мой офис, Р7-Офис и другие).
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 14:20
finsoftrz
George писал(а): ↑30 Март 2024, 14:10
finsoftrz писал(а): ↑30 Март 2024, 13:51
Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов?
Не совсем так, офисные пакеты использовать можно
.
Правда, только те, которые подходят по импортозамещению - по крайней мере, банки готовятся по полной к данному моменту.
Здесь и Linux (Astra Linux, ALT Linux и другие) и офисные пакеты (Мой офис, Р7-Офис и другие).
И среди них нет клонов OpenOffice?
libxlsxwriter for Clarion
Добавлено: 30 Март 2024, 14:23
George
finsoftrz писал(а): ↑30 Март 2024, 14:20
И среди них нет клонов OpenOffice?
Это зависит от банков, некоторые будут использовать Мой офис, другие - Р7 Офис, а третьи - Libre Office.
Как-то так
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 11:07
Alex_G
Губин Игорь писал(а): ↑30 Март 2024, 12:32
Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Добрый день. Спасибо всем , кто откликнулся.
Задача стоит именно такая (
использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 12:03
Дед Пахом
OpenXlsx ещё есть, только её надо самому собрать.
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 18:42
Игорь Столяров
Давно (и не мною) была высказана идея, выполнять генерацию отчёта по шаблону через
трансформацию шаблона в некую последовательность команд, его описывающий.
Т.е. да, для загрузки шаблона нам нужен некий инструмент который умеет читать XLSX файлы.
Но далее он создаёт редактируемый текстовый скрипт (список записей в БД и т.д.) по которому уже строится
сам отчёт с подстановкой значений полей, например той же прекрасной библиотекой XLSXWriter.
Быстро и уже без самого Microsoft Excel.
Например мы вот так визуализируем произвольный XLSX, что бы показать как программа его видит при загрузке.
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 19:31
finsoftrz
Я прямо в Calc рисую. В свойствах xlsx прописываю разделение на детальки в терминах клариона.
Код построения отчета выглядит так.
Код: Выделить всё
reestrSotr_r routine !реестр по сотрудникам
DATA
FsXLSXL &FsXLSX
lor:i long
lor:sumIt_r real
CODE
do FsViewQueue_r
if records(Loc:Queue)=0
FsMessagePr('Данные не найдены!')
exit
.
sort(Loc:Queue,Loc:NameCardPayK,Loc:IDCardPay,Loc:NameTovarK,Loc:IDTovar)
do raschSotrIt_r
do formSotr_r
FsPrimary:Param(1)
FsPrimary:Klients(Loc:IDKlient)
Loc:Filename=GetNameTmp(FsAccess:ActiveUserDir,'xlsx',0)
FsXLSXL &= NEW(FsXLSX)
FsXLSXL.init(Loc:FileName,FsAccess:ActiveUserDir)
FsXLSXL.LoadTemplate('reports\reestrCardsPay.xlfx')
!FsXLSXL.SetPageSetup(,,-1,,1,999)
FsXLSXL.SetValue('PeriodStart',Loc:PeriodStart)
FsXLSXL.SetValue('PeriodEnd',Loc:PeriodEnd)
FsXLSXL.SetValue('NameMag',PAR:Adress)
FsXLSXL.OutSection('secHeader')
lor:sumIt_r=0
loop lor:i=1 to records(Loc:Queue)
get(Loc:Queue,lor:i)
case Loc:TypeRec
of 0
FsPrimary:CardsPay(Loc:IDCardPay)
clear(Loc:QueueCardsIt)
Loc:IDCardPayIt=Loc:IDCardPay
get(Loc:QueueCardsIt,Loc:IDCardPayIt)
lor:sumIt_r+=Loc:SumPayIt
FsXLSXL.SetValue('Sum',Loc:Sum)
FsXLSXL.SetValue('SumTalon',Loc:SumPayIt)
FsXLSXL.OutSection('secGroup')
of 1
FsPrimary:Tovar(Loc:IDTovar)
FsXLSXL.SetValue('Kol',Loc:Kol)
FsXLSXL.SetValue('Sum',Loc:Sum)
FsXLSXL.OutSection('secDetail')
of 3
FsXLSXL.SetValue('Sum',Loc:Sum)
FsXLSXL.SetValue('SumTalon',lor:sumIt_r)
FsXLSXL.OutSection('secFooter')
.
.
free(Loc:Queue)
free(Loc:QueueCardsIt)
FsXLSXL.Make
if FsAnyScreen=0
FsXLSXL.kill(1)
else
FsXLSXL.Kill(2)
FsMessagePr('Отчет будет загружен на Ваш компьютер в файле ' & clip(FsFileShort(Loc:Filename,0)) & ' !')
AnyScreen:DownloadFile(clip(longpath(Loc:Filename)))
.
dispose(FsXLSXL)
Calc требуется только для редактирования бланка, при построении не нужен, xlsx формируется напрямую в файл. Для xls бланков очень похоже. Отчеты такие рисовать очень быстро, быстрее не бывает, используются все возможности офисных пакетов.
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 19:43
Игорь Столяров
В обоих случаях показаны для примера простые списочные отчёты.
А бывают навороченные бланки - например та же транспортная накладная или таможенная декларация.
Их так просто не нарисуешь ... будет проще загрузить и распарсить готовый бланк и по нему уже отрисовывать отчёт.
Конечно же первое, что приходит в голову - это тупо расставить и заполнить поля в самом бланке и всё.
Но тогда нужно средство для работы с XLSX везде где создаются отчёты.
libxlsxwriter for Clarion
Добавлено: 01 Апрель 2024, 20:01
finsoftrz
Игорь Столяров писал(а): ↑01 Апрель 2024, 19:43
В обоих случаях показаны для примера простые списочные отчёты.
А бывают навороченные бланки - например та же транспортная накладная или таможенная декларация.
Их так просто не нарисуешь ... будет проще загрузить и распарсить готовый бланк и по нему уже отрисовывать отчёт.
Конечно же первое, что приходит в голову - это тупо расставить и заполнить поля в самом бланке и всё.
Но тогда нужно средство для работы с XLSX везде где создаются отчёты.
Я думаю, надо разделять табличные формы и произвольные (листовые) формы. 1С долго все делали с помощью табличных форм, и с этим было в определенных ситуациях трудно. Затем в 1С8 добавились отчеты произвольной формы. Нечто похожее на кларионовские репорты, если так можно провести параллели. Это я к тому, что для упомянутых в цитате форм лучше использовать другие инструменты.