Excel по шаблону

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
Ветеран
Сообщения: 1081
Зарегистрирован: 25 Март 2009, 21:55

Excel по шаблону

Сообщение gopstop2007 » 21 Июль 2018, 16:45

Есть замечательная библиотека libxlsxwriter for Clarion от RaFaeL, viewtopic.php?f=8&t=3830&start=30&hilit ... 0%BE%D0%BD.
Отдельное спасибо ему за это.
Но есть необходимость выводить данные в Excel по готовому шаблону. К сожалению libxlsxwriter не позволяет открыть готовый Excel шаблон.
Может кто то знает решение данного вопроса и поделится с сообществом ? :)

Один из вариантов решения у уважаемого finsoftrz, с генерированный программой шаблон (скрипт) сохраняется в файл, как описано здесь viewtopic.php?p=32159#p32159

Возможно есть другие решения, хотелось бы объединить скорость libxlsxwriter, который будет выводить данные в готовый Excel шаблон?
Спасибо за внимание.
С уважением РА - Быть сильным не означает "никогда не падать". Быть сильным означает "ВСЕГДА СНОВА ПОДНИМАТЬСЯ!"

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3598
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Excel по шаблону

Сообщение Игорь Столяров » 21 Июль 2018, 17:45

Ну если вопрос именно по Microsoft Excel - то просто открываем через OLE файл XLSX с нарисованным шаблоном,
и заменяем поля на значения …

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

   ExcelObject{'Application.ActiveSheet.Cells.Replace("' & Clip(xField_) & '","' & Clip(Sub(Clip(xValue_),1,250)) & '",2,1)'}
Сохраняем как копию готовый отчёт, всё через то же OLE в любом фоомате (XLSX, ODS, PDF и т.д.)

Сразу хочу обратить внимание на конструкцию Sub() - есть ограничение на длину экспортируемой строки.
Так же числа должны быть с разделителем в соответствии с региональными настройками Windows и есть
небольшие, но решаемые заморочки с кавычками. Но это уже самостоятельно, а то не интересно будет … ;)

OLE по своей сути ресурсоёмкий, но при достаточных ресурсах - работает вполне шустро.
И можно обрабатывать шаблоны с любыми наворотам, форматированием, вставленной графикой и т.д.
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 2901
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Excel по шаблону

Сообщение kreator » 21 Июль 2018, 17:56

Жаль, конечно, что библиотека не читает Экселевские файлы. По мне - если может писать, должна и читать. Ну да ладно. Если шаблон уже в Экселе, то можно через OLE считать атрибуты ячеек шаблона, например, в очередь (ну сколько их, этих ячеек? 100х100?). А дальше обрабатывать шаблон в памяти и писать этой библиотекой. А если нужно загнать в Эксель небольшое количество данных (ну не знаю, например, разовый договор с покупателем, где его наименование и реквизиты), то сразу в Эксель через OLE.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3598
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Excel по шаблону

Сообщение Игорь Столяров » 21 Июль 2018, 18:20

kreator писал(а):
21 Июль 2018, 17:56
то можно через OLE считать атрибуты ячеек шаблона
Я пробовал такое … слишком много проблем.
И всё равно невозможно воспроизвести потом через LibXLSXWriter оригинальный вид произвольного шаблона.
Даже, если забыть о графике и встраиваемых объектах, то попросту невозможно раздвинуть по тексту объединённые ячейки. :(
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 2901
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Excel по шаблону

Сообщение kreator » 21 Июль 2018, 20:35

Игорь Столяров писал(а):
21 Июль 2018, 18:20
Игорь Столяров » 21 Июль 2018, 18:20


kreator писал(а): ↑21 Июль 2018, 17:56то можно через OLE считать атрибуты ячеек шаблона

Я пробовал такое … слишком много проблем.
А разбор из Экселевского xml-файла меньше проблем доставит? ИМХО, задачи примерно равной сложности.
We are hard at work… for you. :)

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 830
Зарегистрирован: 06 Ноябрь 2014, 12:48

Excel по шаблону

Сообщение finsoftrz » 22 Июль 2018, 9:37

Шаблон - это не просто готовый бланк, в который надо вписать значения, а что-то похожее на report структуру с описанием деталек. Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало. Другое дело, что LibXLSXWriter заточена на ручное написание кода, то есть ее методы преобразуют стандартные в более удобный с этой точки зрения вариант.
Рязань решает.

gopstop2007
Ветеран
Сообщения: 1081
Зарегистрирован: 25 Март 2009, 21:55

Excel по шаблону

Сообщение gopstop2007 » 22 Июль 2018, 10:31

finsoftrz писал(а):
22 Июль 2018, 9:37
Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.
С уважением РА - Быть сильным не означает "никогда не падать". Быть сильным означает "ВСЕГДА СНОВА ПОДНИМАТЬСЯ!"

Аватара пользователя
vic7tar
Активист
Сообщения: 114
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar » 22 Июль 2018, 11:23

А вот на это не хотите взглянуть -> https://github.com/brechtsanders/xlsxio или https://brechtsanders.github.io/xlsxio ?
C10, Win10x64

kreator
Ветеран
Сообщения: 2901
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Excel по шаблону

Сообщение kreator » 22 Июль 2018, 13:06

vic7tar писал(а):
22 Июль 2018, 11:23
А вот на это не хотите взглянуть -> https://github.com/brechtsanders/xlsxio или https://brechtsanders.github.io/xlsxio ?
Вы читали возможности этого? По сравнению с libxlsxwriter детский лепет.
finsoftrz писал(а):
22 Июль 2018, 9:37
Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек.
Озвученную проблему с объединёнными ячейками решает? Мне представляется у Вас всё заточено под себя. Произвольный шаблон, сделанный пользователем, так просто не разобрать.
We are hard at work… for you. :)

Аватара пользователя
vic7tar
Активист
Сообщения: 114
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar » 22 Июль 2018, 16:09

kreator писал(а):
22 Июль 2018, 13:06
Вы читали возможности этого? По сравнению с libxlsxwriter детский лепет.
А что вообще-то хочет ТС? Открыть существующий документ и записать в нужные места свои данные, я так понимаю или нет?
При чем тут проблемы с объединёнными ячейками? И что-то не понял, что значит:
kreator писал(а):
22 Июль 2018, 13:06
Произвольный шаблон, сделанный пользователем, так просто не разобрать.
C10, Win10x64

gopstop2007
Ветеран
Сообщения: 1081
Зарегистрирован: 25 Март 2009, 21:55

Excel по шаблону

Сообщение gopstop2007 » 22 Июль 2018, 17:22

vic7tar писал(а):
22 Июль 2018, 16:09
А что вообще-то хочет ТС? Открыть существующий документ и записать в нужные места свои данные, я так понимаю или нет?
Автоматизацию, без установленного Excel и минимум кода. :)
В программе используются ранее созданные в Excel шаблоны, которые может подправить или изменить пользователь.
Используя Excel шаблоны загружать(заполнять) их данными из программы.
С уважением РА - Быть сильным не означает "никогда не падать". Быть сильным означает "ВСЕГДА СНОВА ПОДНИМАТЬСЯ!"

kreator
Ветеран
Сообщения: 2901
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Excel по шаблону

Сообщение kreator » 22 Июль 2018, 17:26

vic7tar писал(а):
22 Июль 2018, 16:09
А что вообще-то хочет ТС?
Вот есть файл в Экселе. Там может быть хитрое форматирование, может быть графика, может быть диаграммы и т.д. И это называется шаблон. В определённые ячейки нужно записать свои данные и тогда будет готовый документ. Через OLE долго. ТС и спрашивает - как этот экселевский шаблон разобрать? А файл записать через библиотеку libxlsxwriter.
vic7tar писал(а):
22 Июль 2018, 16:09
И что-то не понял, что значит:
kreator писал(а): ↑22 Июль 2018, 13:06Произвольный шаблон, сделанный пользователем, так просто не разобрать.
Инструмент (шаблон) в принципе делается для конечного пользователя. И представьте - пользователь захотел в бланк счёта вставить свой логотип. Как его найти в шаблоне? Совсем по-хорошему нужно парсить все xml-файлы соответствующие Экселевскому файлу. А библиотека, которую вы привели, мало чего может даже для записи, не говоря уже про чтение.
We are hard at work… for you. :)

Аватара пользователя
vic7tar
Активист
Сообщения: 114
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar » 22 Июль 2018, 18:06

kreator писал(а):
22 Июль 2018, 17:26
ТС и спрашивает - как этот экселевский шаблон разобрать? А файл записать через библиотеку libxlsxwriter.
Извиняюсь, но по-моему ТС такого механизма не хотел.
kreator писал(а):
22 Июль 2018, 17:26
Инструмент (шаблон) в принципе делается для конечного пользователя. И представьте - пользователь захотел в бланк счёта вставить свой логотип. Как его найти в шаблоне? Совсем по-хорошему нужно парсить все xml-файлы соответствующие Экселевскому файлу. А библиотека, которую вы привели, мало чего может даже для записи, не говоря уже про чтение.
Да какой это там инструмент, отличие шаблона от порожденного файла только в расширении. При чем тут хитрое форматирование, зачем в шаблоне что-то искать. На то он и шаблон, чтобы его использовать с минимумом усилий, на 95% без всяких форматирований, просто в заранее известные ячейки записывать конкретные данные.
kreator писал(а):
22 Июль 2018, 17:26
А библиотека, которую вы привели, мало чего может даже для записи, не говоря уже про чтение.
А чего она там не может?
C10, Win10x64

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 830
Зарегистрирован: 06 Ноябрь 2014, 12:48

Excel по шаблону

Сообщение finsoftrz » 22 Июль 2018, 18:23

gopstop2007 писал(а):
22 Июль 2018, 10:31
finsoftrz писал(а):
22 Июль 2018, 9:37
Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.
Не знаю, насколько поможет... При желании, все это можно и на клару перевести, если есть желание слегка пободаться с враппером для ms xml parser.
Вложения
make_templ_xlsx.zip
(2.44 КБ) 9 скачиваний
Рязань решает.

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 830
Зарегистрирован: 06 Ноябрь 2014, 12:48

Excel по шаблону

Сообщение finsoftrz » 22 Июль 2018, 18:30

kreator писал(а):
22 Июль 2018, 13:06
vic7tar писал(а):
22 Июль 2018, 11:23
А вот на это не хотите взглянуть -> https://github.com/brechtsanders/xlsxio или https://brechtsanders.github.io/xlsxio ?
Вы читали возможности этого? По сравнению с libxlsxwriter детский лепет.
finsoftrz писал(а):
22 Июль 2018, 9:37
Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек.
Озвученную проблему с объединёнными ячейками решает? Мне представляется у Вас всё заточено под себя. Произвольный шаблон, сделанный пользователем, так просто не разобрать.
Для объединения ячеек в xml используется, насколько помню, тэг merge, в котором задается диапазон объединяемых ячеек. Стиль определяется по первой ячейке в диапазоне. Больше никакой мистики там нет...
Чем отличается шаблон, который делает пользователь, от шаблона, который делаем мы сами? Сами понимаете, что ничем... Все, что можно сделать с помощью libxlsxwriter, можно оформить через шаблон и не писать код руками. Результат все равно будет в виде набора xml файлов определенной структуры.
Рязань решает.

Ответить