Страница 61 из 62
libxlsxwriter for Clarion
Добавлено: 12 Февраль 2017, 14:06
RaFaeL
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (
https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
libxlsxwriter for Clarion
Добавлено: 25 Декабрь 2022, 19:39
Губин Игорь
RaFaeL писал(а): 25 Декабрь 2022, 19:36
Скорее всего, забываете чистить формат перед установкой чего-либо
Увы. как я уже писал, формат чистится не менее 6 раз на строку, а то и все 20. А "артефакты" наблюдаются в строках, в которые нет никакой записи.
libxlsxwriter for Clarion
Добавлено: 25 Декабрь 2022, 19:49
RaFaeL
Губин Игорь писал(а): 25 Декабрь 2022, 19:39
Увы. как я уже писал, формат чистится не менее 6 раз на строку, а то и все 20. А "артефакты" наблюдаются в строках, в которые нет никакой записи.
Я там выше поправил, но возможно уже позже и напишу еще раз. Это поведение похоже на то, что вы не очищаете формат перед применением ширины колонки, вот он и ставится для всей колонки
libxlsxwriter for Clarion
Добавлено: 25 Декабрь 2022, 19:56
finsoftrz
Губин Игорь писал(а): 25 Декабрь 2022, 19:37
finsoftrz писал(а): 25 Декабрь 2022, 19:27
Насколько я помню, содержимое числовых ячеек хранится в одном основном xml, а строки (или только длинные строки) в другом (из основного ссылка на них)
Ну да, нашёл. Но трам-тарарам, без пол литра не разобраться.
Так тебе что надо, выгружать или загружать? Если загружать и напрямую из файла, могу глянуть в загашнике, когда-то пробовал формировать xlsx на уровне этих файлов, след есть.
libxlsxwriter for Clarion
Добавлено: 25 Декабрь 2022, 20:08
Губин Игорь
finsoftrz писал(а): 25 Декабрь 2022, 19:56
Так тебе что надо, выгружать или загружать? Если загружать и напрямую из файла, могу глянуть в загашнике, когда-то пробовал формировать xlsx на уровне этих файлов, след есть.
Мне надо выгружать. Проблема загрузки из файла интересует, исключительно, из любопытства. В своё время я загружал файлы из xls через ole и это было очень медленно.
Пытаюсь понять, с чего эти разработчики приборов так привязались к формату экселя. При чём они, явно, грузят из него напрямую, а не через csv, т.к. очень жёсткие требования к формату ячеек.
libxlsxwriter for Clarion
Добавлено: 25 Декабрь 2022, 20:34
finsoftrz
Да у них какая-нибудь управляющая софтина так сделана. Они художники, они так видят.
libxlsxwriter for Clarion
Добавлено: 26 Апрель 2024, 15:27
Alex_G
Добрый день. Отличная библитека для создания файлов xlsx.
По сравнению с EasyExcel, которой до этого пользовался - все летает.
Но наткнулся на одну непонятку с созданием фильтра на колонку.
В демо примере все отлично компилится и работает.
Перенес в свой проект - ошибка компиляции (
Label in prototype not defined: XLAUTOFILTEROPERATOR ) на строке с вызовом проседуры xlsx.Autofilter() (код взял из примера, где нет ошибки)
Код: Выделить всё
xlsx &=NEW(xlsxwriter)
xlsx.NewWorkbook(LocPathExcelFile)
worksheet#=xlsx.AddSheet('Отчет')
xlsx.SetColumn(1,1,40)
xlsx.SetColumn(2,2,90)
xlsx.ClearFormat()
err#=xlsx.WriteNumber(9,5,10)
err#=xlsx.WriteString(10,5,'Тест')
err#=xlsx.Autofilter(1,5,5,5)
Убираю (комментирую) строку с Autofilter - все собирается.
Что я делаю не так.
CLARION 10, версия библиотеки от 30.12.2021
P.S. Разница с примером одна: пример собирается , как локальный exe-модуль, а мой проект - DLL.
Но с другими процедурами/функциями из библиотеки (я конечно не все использовал) проблем компиляции нет.
libxlsxwriter for Clarion
Добавлено: 26 Апрель 2024, 22:03
RaFaeL
XLAUTOFILTEROPERATOR в моей библиотеке нет. Поищите по своим исходникам и прилинкованным библиотекам, где встречается Autofilter, какой-то конфликт
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 7:43
Игорь Столяров
Могу подтвердить, что при сборке проектов с Multi-DLL библиотека LibXLSXWriter работает без проблем.
Как и во многих других случаях - рекомендую сделать простой пример для демонстрации проблемы,
который мы сможем собрать на заведомо рабочей среде разработки без всего что Вы в неё понаставили.
И вот тогда уже можно будет ответить на Ваш вопрос по существу.

libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:18
Alex_G
Нашел конфликт. Как я уже писал, хочу уйти от EasyExcel, но сразу во всей APP переписать все процедуры не получается, иду по одной.
Убрал из проекта EasyExcel - ошибка ушла.
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:35
RaFaeL
EasyExcel если ничего не путаю это вроде разработка Дед Пахом. Если мне кто-то скажет, что поменять, чтобы конфликта не было, то поменяю, но пока не знаю что. Раз что метод класса переименовать, но не хотелось бы
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:41
Alex_G
Спасибо за ответы, подсказали куда "копать". Т.к. к исходникам EasyExcel доступа нет, а сразу отказаться (выкинуть из проекта) не могу, решил проблему переименованием процедуры Autofilter в классе. Прокатило.
Остался вопрос, возможно ли задать фильтр целиком на столбец?
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:44
Alex_G
RaFaeL писал(а): 27 Апрель 2024, 15:35
EasyExcel если ничего не путаю это вроде разработка Дед Пахом. ..
EasyExcel это от IngaSoft (
http://www.ingasoftplus.com/About.php), платная обертка.
Не знаю, Дед Пахом приложил к этому руку или нет.
В принципе есть практически все , что нужно. Но два минуса:
1. медленно работает с большими объемами
2. в условиях "импортозамещения", требование установки MS Excel на компьютере начинает ставить проблемы
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:45
Игорь Столяров
А Вы можете задать автофильтр на всю колонку в Microsoft Excel ?
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 15:53
Alex_G
Игорь Столяров писал(а): 27 Апрель 2024, 15:45
А Вы можете задать автофильтр на всю колонку в Microsoft Excel ?
В принципе, да .
Выделяю весь столбец, щелкая на "заголовке", и нажимаю "Фильтр".
В EasyExcel так и реализовано, Фильтр действует на выделенный диапазон, а выделить можно целиком один или несколько столбцов, опуская номера строк .
Здесь, как я понимаю, реализовано явным заданием диапазона, не допускающим неуказание границ.
С этим тоже можно работать, задавая заведомо максимальный номер строки. Не проблема
libxlsxwriter for Clarion
Добавлено: 27 Апрель 2024, 16:08
Alex_G
RaFaeL писал(а): 27 Апрель 2024, 15:35
... Если мне кто-то скажет, что поменять, чтобы конфликта не было, то поменяю, но пока не знаю что. Раз что метод класса переименовать, но не хотелось бы
Не думаю, что в законченном проекте будет использоваться и Libxlsxwriter и EasyExcel. У меня процесс перехода с одной на другую, вот и наткнулся.