Excel по шаблону

Clarion, Clarion 7

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

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

Excel по шаблону

Сообщение gopstop2007 »

Есть замечательная библиотека 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 шаблон?
Спасибо за внимание.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Excel по шаблону

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

Ну если вопрос именно по 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 по своей сути ресурсоёмкий, но при достаточных ресурсах - работает вполне шустро.
И можно обрабатывать шаблоны с любыми наворотам, форматированием, вставленной графикой и т.д.
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Excel по шаблону

Сообщение kreator »

Жаль, конечно, что библиотека не читает Экселевские файлы. По мне - если может писать, должна и читать. Ну да ладно. Если шаблон уже в Экселе, то можно через OLE считать атрибуты ячеек шаблона, например, в очередь (ну сколько их, этих ячеек? 100х100?). А дальше обрабатывать шаблон в памяти и писать этой библиотекой. А если нужно загнать в Эксель небольшое количество данных (ну не знаю, например, разовый договор с покупателем, где его наименование и реквизиты), то сразу в Эксель через OLE.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Excel по шаблону

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

kreator писал(а): 21 Июль 2018, 17:56то можно через OLE считать атрибуты ячеек шаблона
Я пробовал такое … слишком много проблем.
И всё равно невозможно воспроизвести потом через LibXLSXWriter оригинальный вид произвольного шаблона.
Даже, если забыть о графике и встраиваемых объектах, то попросту невозможно раздвинуть по тексту объединённые ячейки. :(
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Excel по шаблону

Сообщение kreator »

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


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

Я пробовал такое … слишком много проблем.
А разбор из Экселевского xml-файла меньше проблем доставит? ИМХО, задачи примерно равной сложности.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Excel по шаблону

Сообщение finsoftrz »

Шаблон - это не просто готовый бланк, в который надо вписать значения, а что-то похожее на report структуру с описанием деталек. Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало. Другое дело, что LibXLSXWriter заточена на ручное написание кода, то есть ее методы преобразуют стандартные в более удобный с этой точки зрения вариант.
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Excel по шаблону

Сообщение gopstop2007 »

finsoftrz писал(а): 22 Июль 2018, 9:37 Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar »

А вот на это не хотите взглянуть -> https://github.com/brechtsanders/xlsxio или https://brechtsanders.github.io/xlsxio ?
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Excel по шаблону

Сообщение kreator »

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
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar »

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

Excel по шаблону

Сообщение gopstop2007 »

vic7tar писал(а): 22 Июль 2018, 16:09 А что вообще-то хочет ТС? Открыть существующий документ и записать в нужные места свои данные, я так понимаю или нет?
Автоматизацию, без установленного Excel и минимум кода. :)
В программе используются ранее созданные в Excel шаблоны, которые может подправить или изменить пользователь.
Используя Excel шаблоны загружать(заполнять) их данными из программы.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Excel по шаблону

Сообщение kreator »

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
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Excel по шаблону

Сообщение vic7tar »

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

Excel по шаблону

Сообщение finsoftrz »

gopstop2007 писал(а): 22 Июль 2018, 10:31
finsoftrz писал(а): 22 Июль 2018, 9:37 Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.
Не знаю, насколько поможет... При желании, все это можно и на клару перевести, если есть желание слегка пободаться с враппером для ms xml parser.
Здесь был АТТАЧ.
Убрал на FTP в /_Unknown/make_templ_xlsx.zip т.к. сраный Яндекс ругается на VBS
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Excel по шаблону

Сообщение finsoftrz »

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 файлов определенной структуры.
C6/C11, ШВС, tps/btrieve.
Ответить