libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
- Вложения
-
- libxlsxwriter.zip
- Версия 1.5 от 30.12.2021 на основе библиотеки 1.1.4
- (276.26 КБ) 988 скачиваний
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
см. сообщения от 28.12.2017 г. или просто добавьте параметр c форматом в метод:Артур писал(а): 03 Январь 2018, 21:51Не могу нарисовать бордюры на объединении ячеек, подскажи пожалуйста как это делается?
Код: Выделить всё
xlsxwriter.Merge PROCEDURE(LONG first_row_,LONG first_col_,LONG last_row_,LONG last_col_)
CODE
return worksheet_merge_range(SELF.ActiveWorksheet,first_row_-1,first_col_-1,last_row_-1,last_col_-1,,SELF.ActiveFormat)
Make Clarion Great Again ! 
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Ещё необъяснимый фортель библиотеки ... Если выполнить код:
то строка 13 будет пустая.
Подозреваю, что проблема где-то с конвертации в UTF, потому что
при вводе напрямую в Microsoft Excel или при экспорте через OLE символ '№' нормально записывается в ячейку.
Не смертельно ... но непонятно !
Код: Выделить всё
err# = xlsx.WriteString(10,1,'N')
err# = xlsx.WriteString(11,1,'!')
err# = xlsx.WriteString(12,1,'@')
err# = xlsx.WriteString(13,1,'№')
err# = xlsx.WriteString(14,1,'$')
err# = xlsx.WriteString(15,1,'%')
err# = xlsx.WriteString(16,1,'&')

при вводе напрямую в Microsoft Excel или при экспорте через OLE символ '№' нормально записывается в ячейку.
Не смертельно ... но непонятно !

Make Clarion Great Again ! 
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Да, но есть проблемы-с ...finsoftrz писал(а): 02 Январь 2018, 10:45Кстати, Libre Office Calc работает шустрее, чем Open Office Calc.

При открытии в Libre Calc XLSX файла созданного через XLSXWriter не отрабатывается перенос текста (WrapText).

- Если открывать XLSX файл в Apache Calc с конвертацией - проблемы нет;
- Если перезаписать созданный в XLSXWriter XLSX файл через Microsoft Excel - проблемы нет и в Libre Calc;
- Если создать XLSX файл, например через библиотеку EasyOpenOffice напрямую в Libre Calc - проблемы нет.
А в XLSX файлах созданных через Ваш класс отрабатывается перенос строк (WrapText) при открытии в Libre Calc ?
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Посмотрел, тоже не срабатывает. Сейчас пока занят, чуть позже уточню. Что-то в стиле надо подкорректировать.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
У меня символ № корректно выводится. А вот для вывода & надо заменить на &. Не знаю, как лучше, либо в самом классе автоматически такие вещи разруливать, либо явно. Ситуации со спецсимволами могут быть разные.Игорь Столяров писал(а): 04 Январь 2018, 0:45Ещё необъяснимый фортель библиотеки ... Если выполнить код:
то строка 13 будет пустая.Код: Выделить всё
err# = xlsx.WriteString(10,1,'N') err# = xlsx.WriteString(11,1,'!') err# = xlsx.WriteString(12,1,'@') err# = xlsx.WriteString(13,1,'№') err# = xlsx.WriteString(14,1,'$') err# = xlsx.WriteString(15,1,'%') err# = xlsx.WriteString(16,1,'&')
Подозреваю, что проблема где-то с конвертации в UTF, потому что
при вводе напрямую в Microsoft Excel или при экспорте через OLE символ '№' нормально записывается в ячейку.
Не смертельно ... но непонятно !
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Тут-то хоть более или менее понятно: Вы ведь напрямую пишите в XML файл - это спецификация XML.
А вот каким местом символ "№" вдруг стал СПЕЦСИМВОЛОМ - непонятно !

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Похоже, libre не умеет автоматически увеличивать высоту строки при WrapText. Посмотрел файл, сохраненный из libre с автопереносом. В xml стиль прописывается аналогично, а вот высота строки явно с нужным (увеличенным) размером.finsoftrz писал(а): 04 Январь 2018, 10:36Посмотрел, тоже не срабатывает. Сейчас пока занят, чуть позже уточню. Что-то в стиле надо подкорректировать.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Не уверен, что дело в том, что Libre Calc жестко выставляет высоту строки.finsoftrz писал(а): 04 Январь 2018, 11:04 В xml стиль прописывается аналогично, а вот высота строки явно с нужным (увеличенным) размером.
Если пересохранить XLSX файл через Microsoft Excel - то WrapText в Libre Calc отрабатывается штатно.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
А скиньте файлик после сохранения в excel. Или сами гляньте в нем xl\worksheets\sheet1.xml для нужного row, что стоит в атрибуте ht. После сохранения из libre у меня в других строках значение 15, а в строке, где применен wrap, значение больше. LibxlsxWriter атрибут ht не применяет, если не задать явно высоту строки.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Файлы сбросил в личку. Да, Microsoft Excel записывает в аттрибут HT высоту строки ...
Но ведь в Microsoft Excel и оригинальный (записанный в XLSXWriter) сразу открывается с раздвижкой строк.
Значит параметр WrapText управляется каким-то другим тегом, который Libre Calc игнорирует.
Здесь нужно знать спецификацию XLSX формата, потому что методом "исcледования выхлопа" можно разбираться бесконечно долго.

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Он управляется атрибутом wraptext у стиля. Но применение этого атрибута не приводит к автоматическому увеличению высоты в libre. А в excel и open office приводит. Возможно, у libre используется какой-то дополнительный атрибут, текст переносится, не измеяется высота строки.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Погуглил немного. Как я понял, это известный баг в libre. Рекомендуют устанавливать высоту строки явно. Я похожее делаю в dexcel, так как там тоже не поддерживается wraptext. То есть в бланке вписываю в ячейку специальную формулу для класса формирования xls. Но это явный костыль.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Руденко, помнится, рекомендовал для dexcel еще другой костыль - после формирования xls файла подключаться через ole и устанавливать wraptext для нужной колонки.
В общем, с libre засада, судя по всему.
В общем, с libre засада, судя по всему.
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5233
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Да, еще заметил, что у libre есть какая-то несовместимость с программным интерфейсом. После установки перестали выводится графики, которые нормально отрабатывались в open office. Потом снес, установил на всякий случай последнее обновление open office. Все снова заработало. Заново установил libre, как ни странно, вывод остался корректный.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Да, ну не дружат между собой понятия "на шару" и "хорошо работает" ...

Make Clarion Great Again ! 