Где у Вас прописаны "[Пред1]", "[Пред4]"? "[T18]" - вообще всё понятно, даже справку читать не надо. Я так понимаю это некий набор полей для таблицы?Игорь Столяров писал(а): ↑02 Апрель 2024, 6:11В самом отчёте.
Здесь как бы наоборот - если нет развитой системы отчётов (типа как у Рафаэля), то мона прикрутить примитивную
возможность тупо расставить в любом XLSX файле поля и потом заполнять их программы. И на этом ... всё.
1.jpg
Библиотеки для редактирования файлов Excel
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5087
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5087
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Alex_G, идея такая. Если это Ваши шаблоны, то можно их сохранить в xml. У Экселя есть такая штука, называется "Таблица xml". Это простой текстовый файл. Думаю, "распарсить" его проблем не будет, можно наверно и стандартными средствами. Работает шустро. Несколько лет назад я выкладывал здесь пример такой работы. Правда я писал туда, а не читал. Возможно и в этом топике, где-то в начале.Alex_G писал(а): ↑01 Апрель 2024, 11:07Добрый день. Спасибо всем , кто откликнулся.Губин Игорь писал(а): ↑30 Март 2024, 12:32 Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Задача стоит именно такая (использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
We are hard at work… for you.
libxlsxwriter for Clarion
Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.kreator писал(а): ↑02 Апрель 2024, 11:07Alex_G, идея такая. Если это Ваши шаблоны, то можно их сохранить в xml. У Экселя есть такая штука, называется "Таблица xml". Это простой текстовый файл. Думаю, "распарсить" его проблем не будет, можно наверно и стандартными средствами. Работает шустро. Несколько лет назад я выкладывал здесь пример такой работы. Правда я писал туда, а не читал. Возможно и в этом топике, где-то в начале.Alex_G писал(а): ↑01 Апрель 2024, 11:07Добрый день. Спасибо всем , кто откликнулся.Губин Игорь писал(а): ↑30 Март 2024, 12:32 Насколько я понял задачу, в программе требуется использовать внешний файл xls/xlsx в качестве шаблона вывода. Тут увы, без чтения/записи никак.
Задача стоит именно такая (использовать внешний файл xls/xlsx в качестве шаблона вывода), только с ограничением, что на компьютере может не быть установлен никакой OFFICE, в том числе и ОО.
Как я понял, кроме LibXL (оригинальной или от KlariSoft), доугих решений нет. Значит "будем копать" в этом направлении.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7735
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 73 раза
libxlsxwriter for Clarion
Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ...
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4933
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
libxlsxwriter for Clarion
Так просто может не прокатить. В xlsx числовые значения хранятся в одном xml, строковые в другом. То есть надо в строках найти метку, затем в ячейках найти ссылку на эту строку, заменить тип значения и вставить число. Возможно, и xml со строками надо обработать после этого как-то. Экспериментировать надо.Игорь Столяров писал(а): ↑02 Апрель 2024, 12:00Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ...
Последний раз редактировалось finsoftrz 02 Апрель 2024, 12:25, всего редактировалось 1 раз.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4933
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
libxlsxwriter for Clarion
Точнее, число можно вставить как строку, надо проверить, не поедут ли формулы. А это еще может зависеть от офисного пакета. Calc работает более корректно с этим, чем Excel, а других не смотрел. Если строка это число, то Calc воспринимает, как числовое значение, а Excel как строковое.
C6/C11, ШВС, tps/btrieve.
libxlsxwriter for Clarion
Ну не совсем так просто. Во-первых, количество даннных, выгружаемых в отчет может быть различное, во-вторых, "шрифтами/выравниваниями" тоже иногда приходится управлять.Игорь Столяров писал(а): ↑02 Апрель 2024, 12:00Т.е. ни те шрифтов, ни рамок, ни диаграмм ...
Тогда я соглашусь. Поставьте в XLSX какую-нибудь метку, потом найдите в ZIP архиве файл с меткой и замените её данными.
Всё. Ну и сохраните XLSX под другим именем ...
Строковые данные, выводимые в отчет - Excel, как правильно было подмечено, хранит их отдельно и без дублирования, соответственно надо понимать, какие строковые значения относятся к "постоянному контенту" шаблона, а какие к текущей выгрузке и должны быть заменены.
Да и обеспечить корректность "ссылок" и "формул" - отдельная задача.
Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
-
- ✯ Ветеран ✯
- Сообщения: 5087
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
А как они это делают, если не предполагается наличие Экселя?Alex_G писал(а): ↑02 Апрель 2024, 11:52 Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
We are hard at work… for you.
libxlsxwriter for Clarion
Все просто, есть один (два) опытных пользователя (условно назовем - методологи), которые создают и ответственны за эти шаблоны, и есть несколько обычных пользователей, которые на основе шаблонов и своих данных формируют отчеты. Им, как раз, Excel не дают.kreator писал(а): ↑02 Апрель 2024, 15:29А как они это делают, если не предполагается наличие Экселя?Alex_G писал(а): ↑02 Апрель 2024, 11:52 Шаблоны создают сами пользователи. В программе на заранее определенный лист выгружается необходимая информация из базы данных.
Далее пользователь средствами Excel "наводит красоту" (строит диаграммы, использует статистические функции, формирует свою структуру отчета). Кроме того, в этом шаблоне могут быть внешние ссылки на другие источники данных. По сути в программе необходимо открыть файл с шаблоном (образец), выгрузить в него на заранее известный лист свои данные и сохранить под другим именем.
-
- ✯ Ветеран ✯
- Сообщения: 5087
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Методологи сохраняют шаблоны как "Шаблоны" наверно? Скажите им чтобы сохраняли как "Таблица XML". Делов-то!!!
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4933
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
libxlsxwriter for Clarion
Я бы начал с элементарного. Взял шаблон попроще, переименовал xlsx в zip, разархивировал, нашел метку для замены (например, через far), любым редактором заменил на значение, заархивировал в zip, переименовал в xlsx и открыл в Excel. Если такое прокатит, то можно вообще тупо заменой подстрок обойтись, даже без разбора xml. Делов на 5 минут. Тогда уже можно понять целесообразность покупки сторонних библиотек.Alex_G писал(а): ↑02 Апрель 2024, 14:11 Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5087
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Только забыл предупредить, что формат "Таблица XML" неполноценный. Не всё сохраняет. Графики, например, нет. Надо проверять Ваши требования.
We are hard at work… for you.
libxlsxwriter for Clarion
Формат "Таблица XML" не поддерживает весь функционал XLSX (например листы с диаграммами).
Хотя для простых шаблонов, где нет диаграмм, это может быть вариантом решения, но с рядом неудобств:
1. ограничиваем пользователя в функционале EXCEL (а диаграммы один из востребованных функционалов)
2. заставляем работать с непривычным форматом (может кто-то и удивится, но, к сожалению, порой пользователи не знают что такое XML)
3. ну и самим себе добавляем геморроя работы,
Чтобы избежать этих неудобств, вполне можно разово заплатить адекватную сумму
libxlsxwriter for Clarion
Я полностью с Вами согласен, что теоретически можно работать с xlsx редактируя xml, но как я выше писал, хотелось бы избежать "низкоуровневой" работы с файлами и воспользоваться существующими библиотеками (пусть и платными). Как я понял, такая (такие) есть. Поэтому вполне естественное желание спросить совета "на какие грабли не наступать". Спасибо всем, кто откликнулся.finsoftrz писал(а): ↑02 Апрель 2024, 17:05Я бы начал с элементарного. Взял шаблон попроще, переименовал xlsx в zip, разархивировал, нашел метку для замены (например, через far), любым редактором заменил на значение, заархивировал в zip, переименовал в xlsx и открыл в Excel. Если такое прокатит, то можно вообще тупо заменой подстрок обойтись, даже без разбора xml. Делов на 5 минут. Тогда уже можно понять целесообразность покупки сторонних библиотек.Alex_G писал(а): ↑02 Апрель 2024, 14:11 Другими словами, это путь "низкоуровневой" работы с файлами Excel. Как человека, начинавшего программирование с ассемблера (еще на ЕС-1022, может кто помнит), меня это не очень пугает, но эффективность и производительность такой работы будет не высока. Да и сопровождать подобный код - та еще работка. По сути, предложение написать свою аналогичную библиотеку. Хотелось бы воспользоваться существующими наработками, а не изобретать велосипед
- Губин Игорь
- Шубуршун
- Сообщения: 2451
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 24 раза
libxlsxwriter for Clarion
Так я не понял, с чего копья ломаются?!
Есть достаточно хорошо документированная библиотека в исходниках. Компиляция с тестированием, если лень самому ставить VS, обойдётся в 2-3 т.р. (нанять любого студента первокурсника с вычислительной специальности).
И всё будет работать на ура.
Есть достаточно хорошо документированная библиотека в исходниках. Компиляция с тестированием, если лень самому ставить VS, обойдётся в 2-3 т.р. (нанять любого студента первокурсника с вычислительной специальности).
И всё будет работать на ура.
Это я только кажусь дураком! На самом деле я полный идиот!