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

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
kreator
✯ Ветеран ✯
Сообщения: 4988
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

libxlsxwriter for Clarion

Сообщение kreator »

Игорь Столяров писал(а): 02 Апрель 2024, 6:11
kreator писал(а): 01 Апрель 2024, 21:41 сделанным в Экселе. Надо же данные туда кидать. А эти настройки где?
В самом отчёте. :)
Здесь как бы наоборот - если нет развитой системы отчётов (типа как у Рафаэля), то мона прикрутить примитивную
возможность тупо расставить в любом XLSX файле поля и потом заполнять их программы. И на этом ... всё. :)


1.jpg
Где у Вас прописаны "[Пред1]", "[Пред4]"? "[T18]" - вообще всё понятно, даже справку читать не надо. :D Я так понимаю это некий набор полей для таблицы?
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4988
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

libxlsxwriter for Clarion

Сообщение kreator »

Alex_G писал(а): 01 Апрель 2024, 11:07
Губин Игорь писал(а): 30 Март 2024, 12:32 Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Добрый день. Спасибо всем , кто откликнулся.
Задача стоит именно такая (использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
Alex_G, идея такая. Если это Ваши шаблоны, то можно их сохранить в xml. У Экселя есть такая штука, называется "Таблица xml". Это простой текстовый файл. Думаю, "распарсить" его проблем не будет, можно наверно и стандартными средствами. Работает шустро. Несколько лет назад я выкладывал здесь пример такой работы. Правда я писал туда, а не читал. Возможно и в этом топике, где-то в начале.
We are hard at work… for you. :)
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

kreator писал(а): 02 Апрель 2024, 11:07
Alex_G писал(а): 01 Апрель 2024, 11:07
Губин Игорь писал(а): 30 Март 2024, 12:32 Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Добрый день. Спасибо всем , кто откликнулся.
Задача стоит именно такая (использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
Alex_G, идея такая. Если это Ваши шаблоны, то можно их сохранить в xml. У Экселя есть такая штука, называется "Таблица xml". Это простой текстовый файл. Думаю, "распарсить" его проблем не будет, можно наверно и стандартными средствами. Работает шустро. Несколько лет назад я выкладывал здесь пример такой работы. Правда я писал туда, а не читал. Возможно и в этом топике, где-то в начале.
Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

libxlsxwriter for Clarion

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

Alex_G писал(а): 02 Апрель 2024, 11:52 выгрузить в него на заранее известный лист свои данные и сохранить под другим именем
Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Игорь Столяров писал(а): 02 Апрель 2024, 12:00
Alex_G писал(а): 02 Апрель 2024, 11:52 выгрузить в него на заранее известный лист свои данные и сохранить под другим именем
Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ... :)
Так просто может не прокатить. В xlsx числовые значения хранятся в одном xml, строковые в другом. То есть надо в строках найти метку, затем в ячейках найти ссылку на эту строку, заменить тип значения и вставить число. Возможно, и xml со строками надо обработать после этого как-то. Экспериментировать надо.
Последний раз редактировалось finsoftrz 02 Апрель 2024, 12:25, всего редактировалось 1 раз.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Точнее, число можно вставить как строку, надо проверить, не поедут ли формулы. А это еще может зависеть от офисного пакета. Calc работает более корректно с этим, чем Excel, а других не смотрел. Если строка это число, то Calc воспринимает, как числовое значение, а Excel как строковое.
C6/C11, ШВС, tps/btrieve.
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

Игорь Столяров писал(а): 02 Апрель 2024, 12:00
Alex_G писал(а): 02 Апрель 2024, 11:52 выгрузить в него на заранее известный лист свои данные и сохранить под другим именем
Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ... :)
Ну не совсем так просто. Во-первых, количество даннных, выгружаемых в отчет может быть различное, во-вторых, "шрифтами/выравниваниями" тоже иногда приходится управлять.
Строковые данные, выводимые в отчет - Excel, как правильно было подмечено, хранит их отдельно и без дублирования, соответственно надо понимать, какие строковые значения относятся к "постоянному контенту" шаблона, а какие к текущей выгрузке и должны быть заменены.
Да и обеспечить корректность "ссылок" и "формул" - отдельная задача.

Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
kreator
✯ Ветеран ✯
Сообщения: 4988
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

libxlsxwriter for Clarion

Сообщение kreator »

Alex_G писал(а): 02 Апрель 2024, 11:52 Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
А как они это делают, если не предполагается наличие Экселя?
We are hard at work… for you. :)
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

kreator писал(а): 02 Апрель 2024, 15:29
Alex_G писал(а): 02 Апрель 2024, 11:52 Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
А как они это делают, если не предполагается наличие Экселя?
Все просто, есть один (два) опытных пользователя (условно назовем - методологи), которые создают и ответственны за эти шаблоны, и есть несколько обычных пользователей, которые на основе шаблонов и своих данных формируют отчеты. Им, как раз, Excel не дают.
kreator
✯ Ветеран ✯
Сообщения: 4988
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

libxlsxwriter for Clarion

Сообщение kreator »

Alex_G писал(а): 02 Апрель 2024, 16:08 Все просто, есть один (два) опытных пользователя (условно назовем - методологи), которые создают и ответственны за эти шаблоны, и есть несколько обычных пользователей, которые на основе шаблонов и своих данных формируют отчеты. Им, как раз, Excel не дают.
Методологи сохраняют шаблоны как "Шаблоны" наверно? Скажите им чтобы сохраняли как "Таблица XML". Делов-то!!!
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4629
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Alex_G писал(а): 02 Апрель 2024, 14:11 Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
Я бы начал с элементарного. Взял шаблон попроще, переименовал xlsx в zip, разархивировал, нашел метку для замены (например, через far), любым редактором заменил на значение, заархивировал в zip, переименовал в xlsx и открыл в Excel. Если такое прокатит, то можно вообще тупо заменой подстрок обойтись, даже без разбора xml. Делов на 5 минут. Тогда уже можно понять целесообразность покупки сторонних библиотек.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4988
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

libxlsxwriter for Clarion

Сообщение kreator »

Только забыл предупредить, что формат "Таблица XML" неполноценный. Не всё сохраняет. Графики, например, нет. Надо проверять Ваши требования.
We are hard at work… for you. :)
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

kreator писал(а): 02 Апрель 2024, 16:40
Alex_G писал(а): 02 Апрель 2024, 16:08 Все просто, есть один (два) опытных пользователя (условно назовем - методологи), которые создают и ответственны за эти шаблоны, и есть несколько обычных пользователей, которые на основе шаблонов и своих данных формируют отчеты. Им, как раз, Excel не дают.
Методологи сохраняют шаблоны как "Шаблоны" наверно? Скажите им чтобы сохраняли как "Таблица XML". Делов-то!!!
Формат "Таблица XML" не поддерживает весь функционал XLSX (например листы с диаграммами).
Хотя для простых шаблонов, где нет диаграмм, это может быть вариантом решения, но с рядом неудобств:
1. ограничиваем пользователя в функционале EXCEL (а диаграммы один из востребованных функционалов)
2. заставляем работать с непривычным форматом (может кто-то и удивится, но, к сожалению, порой пользователи не знают что такое XML)
3. ну и самим себе добавляем геморроя работы,
Чтобы избежать этих неудобств, вполне можно разово заплатить адекватную сумму
Alex_G
Бывалый
Сообщения: 77
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

libxlsxwriter for Clarion

Сообщение Alex_G »

finsoftrz писал(а): 02 Апрель 2024, 17:05
Alex_G писал(а): 02 Апрель 2024, 14:11 Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
Я бы начал с элементарного. Взял шаблон попроще, переименовал xlsx в zip, разархивировал, нашел метку для замены (например, через far), любым редактором заменил на значение, заархивировал в zip, переименовал в xlsx и открыл в Excel. Если такое прокатит, то можно вообще тупо заменой подстрок обойтись, даже без разбора xml. Делов на 5 минут. Тогда уже можно понять целесообразность покупки сторонних библиотек.
Я полностью с Вами согласен, что теоретически можно работать с xlsx редактируя xml, но как я выше писал, хотелось бы избежать "низкоуровневой" работы с файлами и воспользоваться существующими библиотеками (пусть и платными). Как я понял, такая (такие) есть. Поэтому вполне естественное желание спросить совета "на какие грабли не наступать". Спасибо всем, кто откликнулся.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2334
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

libxlsxwriter for Clarion

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

Так я не понял, с чего копья ломаются?! :dizzy:

Есть достаточно хорошо документированная библиотека в исходниках. Компиляция с тестированием, если лень самому ставить VS, обойдётся в 2-3 т.р. (нанять любого студента первокурсника с вычислительной специальности).

И всё будет работать на ура.
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить