Страница 1 из 2

Excel по шаблону

Добавлено: 21 Июль 2018, 16:45
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 шаблон?
Спасибо за внимание.

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 по своей сути ресурсоёмкий, но при достаточных ресурсах - работает вполне шустро.
И можно обрабатывать шаблоны с любыми наворотам, форматированием, вставленной графикой и т.д.

Excel по шаблону

Добавлено: 21 Июль 2018, 17:56
kreator
Жаль, конечно, что библиотека не читает Экселевские файлы. По мне - если может писать, должна и читать. Ну да ладно. Если шаблон уже в Экселе, то можно через OLE считать атрибуты ячеек шаблона, например, в очередь (ну сколько их, этих ячеек? 100х100?). А дальше обрабатывать шаблон в памяти и писать этой библиотекой. А если нужно загнать в Эксель небольшое количество данных (ну не знаю, например, разовый договор с покупателем, где его наименование и реквизиты), то сразу в Эксель через OLE.

Excel по шаблону

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

Excel по шаблону

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


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

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

Excel по шаблону

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

Excel по шаблону

Добавлено: 22 Июль 2018, 10:31
gopstop2007
finsoftrz писал(а): 22 Июль 2018, 9:37 Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.

Excel по шаблону

Добавлено: 22 Июль 2018, 11:23
vic7tar
А вот на это не хотите взглянуть -> https://github.com/brechtsanders/xlsxio или https://brechtsanders.github.io/xlsxio ?

Excel по шаблону

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

Excel по шаблону

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

Excel по шаблону

Добавлено: 22 Июль 2018, 17:22
gopstop2007
vic7tar писал(а): 22 Июль 2018, 16:09 А что вообще-то хочет ТС? Открыть существующий документ и записать в нужные места свои данные, я так понимаю или нет?
Автоматизацию, без установленного Excel и минимум кода. :)
В программе используются ранее созданные в Excel шаблоны, которые может подправить или изменить пользователь.
Используя Excel шаблоны загружать(заполнять) их данными из программы.

Excel по шаблону

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

Excel по шаблону

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

Excel по шаблону

Добавлено: 22 Июль 2018, 18:23
finsoftrz
gopstop2007 писал(а): 22 Июль 2018, 10:31
finsoftrz писал(а): 22 Июль 2018, 9:37 Я вроде выкладывал скрипт на бэйсике, который разбирает xml файл в плоский вид, легко забираемый из клариона без использования дополнительных библиотек. Особых проблем вроде не возникало.
Если есть у Вас возможность, просьба, выложите еще раз или укажите ссылку на него. Спасибо.
Не знаю, насколько поможет... При желании, все это можно и на клару перевести, если есть желание слегка пободаться с враппером для ms xml parser.
Здесь был АТТАЧ.
Убрал на FTP в /_Unknown/make_templ_xlsx.zip т.к. сраный Яндекс ругается на VBS

Excel по шаблону

Добавлено: 22 Июль 2018, 18:30
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 файлов определенной структуры.