Библиотеки для редактирования файлов Excel

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
George
Активист
Сообщения: 110
Зарегистрирован: 04 Август 2009, 10:48
Благодарил (а): 1 раз

libxlsxwriter for Clarion

Сообщение George »

Игорь Столяров писал(а): 30 Март 2024, 13:33 Чем больше функционала реализовано в прикладной программе без привлечения внешних компонент - тем лучше.
Но выбор реализации через стороннюю коммерческую библиотеку, вместо бесплатного офисного пакета не так уж и очевиден. ;)

Опыт показывает, что Open Source проекты более стабильны и последовательны в своём развитии, чем стартапы
где несколько человек пытаются платить ипотеку с одной DLL. :)
В идеале согласен, только где такой Open Source по данной теме, который бы удовлетворял всем моих "хотелкам"? :)
Искал долго - не нашел к сожалению! :(
George
Активист
Сообщения: 110
Зарегистрирован: 04 Август 2009, 10:48
Благодарил (а): 1 раз

libxlsxwriter for Clarion

Сообщение George »

finsoftrz писал(а): 30 Март 2024, 13:02 Я не очень понимаю в принципе, зачем надо уйти от использования офисных пакетов, при этом формируя отчеты в их формат? Понимаю задачи формировать быстро и без привязки к конкретному офисному пакету. В первую очередь подразумевается от привязки к Excel, который платный. Причем сейчас легальность Excel еще меньше принципиальна, чем раньше.
Этот Вы обсудите с Банком России и подчиненными кредитными организациями. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов? :sur: :mrgreen:
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2333
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

libxlsxwriter for Clarion

Сообщение Губин Игорь »

finsoftrz писал(а): 30 Март 2024, 12:55 Я делаю шаблон в Calc, затем распаковываю архив и скриптом на vbscript вытаскиваю нужную для формирования отчета информацию из xml таблиц, сохраняю в промежуточный текстовый файл (препроцессинг). Этот текстовый файл и используется при формировании отчета. Шаблоны меняются редко, и для формирования xlsx по шаблону ничего стороннего не нужно.
Однако... "мы всё так делаем" :dizzy:

Ничего личного, но перебор.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2333
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

libxlsxwriter for Clarion

Сообщение Губин Игорь »

finsoftrz писал(а): 30 Март 2024, 13:51 Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов?
Я бы поверил... Имея дело с госструктурами и не на такое наткнёшься. :facepalm:

Мы бодались с одной конторой, которая мало того, что требовала отчёты в docx (по конкретному файлу-шаблону), это ещё куда ни шло, но и проверяла их в автоматическом режиме, отбрасывая все, которые не созданы конкретной версией ворда. :dizzy:

При этом истерику ("почему не принимают отчёт?!") закатывали именно мне, который ну совершенно не при чём (пришлось разбираться :nr: )
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Губин Игорь писал(а): 30 Март 2024, 13:59 отбрасывая все, которые не созданы конкретной версией ворда
Такое бывает ... :) Везде свои "внутренние стандарты" ! Сидит человек в конторе, и уже ничего не хочет делать до пенсии.
Мы делали отчётность по продажам через XLSXWriter и директор поставщика с нами свзывался, т.к. их системный архитектор
(именно так он себя сам называл !) утверждал, что такое сделать в XLSX ну в принципе невозможно ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
George
Активист
Сообщения: 110
Зарегистрирован: 04 Август 2009, 10:48
Благодарил (а): 1 раз

libxlsxwriter for Clarion

Сообщение George »

finsoftrz писал(а): 30 Март 2024, 13:51 Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов? :sur: :mrgreen:
Не совсем так, офисные пакеты использовать можно :).
Правда, только те, которые подходят по импортозамещению - по крайней мере, банки готовятся по полной к данному моменту.
Здесь и Linux (Astra Linux, ALT Linux и другие) и офисные пакеты (Мой офис, Р7-Офис и другие).
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

George писал(а): 30 Март 2024, 14:10
finsoftrz писал(а): 30 Март 2024, 13:51 Банк России присылает в коммерческие банки бланки шаблонов форм отчетности и требует их заполнить без использования офисных пакетов? :sur: :mrgreen:
Не совсем так, офисные пакеты использовать можно :).
Правда, только те, которые подходят по импортозамещению - по крайней мере, банки готовятся по полной к данному моменту.
Здесь и Linux (Astra Linux, ALT Linux и другие) и офисные пакеты (Мой офис, Р7-Офис и другие).
И среди них нет клонов OpenOffice?
C6/C11, ШВС, tps/btrieve.
George
Активист
Сообщения: 110
Зарегистрирован: 04 Август 2009, 10:48
Благодарил (а): 1 раз

libxlsxwriter for Clarion

Сообщение George »

finsoftrz писал(а): 30 Март 2024, 14:20 И среди них нет клонов OpenOffice?
Это зависит от банков, некоторые будут использовать Мой офис, другие - Р7 Офис, а третьи - Libre Office.
Как-то так :)
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

Губин Игорь писал(а): 30 Март 2024, 12:32 Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Добрый день. Спасибо всем , кто откликнулся.
Задача стоит именно такая (использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3135
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение Дед Пахом »

OpenXlsx ещё есть, только её надо самому собрать.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Давно (и не мною) была высказана идея, выполнять генерацию отчёта по шаблону через
трансформацию шаблона в некую последовательность команд, его описывающий.

Т.е. да, для загрузки шаблона нам нужен некий инструмент который умеет читать XLSX файлы.

Но далее он создаёт редактируемый текстовый скрипт (список записей в БД и т.д.) по которому уже строится
сам отчёт с подстановкой значений полей, например той же прекрасной библиотекой XLSXWriter.
Быстро и уже без самого Microsoft Excel.

Например мы вот так визуализируем произвольный XLSX, что бы показать как программа его видит при загрузке.

1.jpg
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Я прямо в Calc рисую. В свойствах xlsx прописываю разделение на детальки в терминах клариона.

xlsx_templ.jpg

Код построения отчета выглядит так.

Код: Выделить всё

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 бланков очень похоже. Отчеты такие рисовать очень быстро, быстрее не бывает, используются все возможности офисных пакетов.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

В обоих случаях показаны для примера простые списочные отчёты.
А бывают навороченные бланки - например та же транспортная накладная или таможенная декларация.
Их так просто не нарисуешь ... будет проще загрузить и распарсить готовый бланк и по нему уже отрисовывать отчёт.

Конечно же первое, что приходит в голову - это тупо расставить и заполнить поля в самом бланке и всё. :)
Но тогда нужно средство для работы с XLSX везде где создаются отчёты.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Игорь Столяров писал(а): 01 Апрель 2024, 19:43 В обоих случаях показаны для примера простые списочные отчёты.
А бывают навороченные бланки - например та же транспортная накладная или таможенная декларация.
Их так просто не нарисуешь ... будет проще загрузить и распарсить готовый бланк и по нему уже отрисовывать отчёт.

Конечно же первое, что приходит в голову - это тупо расставить и заполнить поля в самом бланке и всё. :)
Но тогда нужно средство для работы с XLSX везде где создаются отчёты.
Я думаю, надо разделять табличные формы и произвольные (листовые) формы. 1С долго все делали с помощью табличных форм, и с этим было в определенных ситуациях трудно. Затем в 1С8 добавились отчеты произвольной формы. Нечто похожее на кларионовские репорты, если так можно провести параллели. Это я к тому, что для упомянутых в цитате форм лучше использовать другие инструменты.

xlsx_templ2.jpg
C6/C11, ШВС, tps/btrieve.
Ответить