libxlsxwriter for Clarion
Программы на Clarion, шаблоны, библиотеки и пр.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 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 КБ) 1050 скачиваний
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
RaFaeL
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Да, фикс есть какой-то. Только это не про группировки, это про нулевые отступы в колонтитулах.Игорь Столяров писал(а): 03 Февраль 2018, 20:11Ой ! Мне тут GitHub/John McNamara бросил пост: There is now a fix for this on the master branch !
Это значит, что группировка строк добавлена !?
В описании на сайте ничего нет ... А что такое "master branch" ? Может какой-то раздел для бета-тестирования ?
https://github.com/jmcnamara/libxlsxwri ... 7ad5f21867
Ну тоже дело.
Сейчас попробую скачать и пересобрать
Последний раз редактировалось RaFaeL 03 Февраль 2018, 20:30, всего редактировалось 1 раз.
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
В примерах появилось !
Код: Выделить всё
if (user_options) {
hidden = user_options->hidden;
level = user_options->level;
collapsed = user_options->collapsed;
}
Make Clarion Great Again ! 
Игорь Столяров
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Это и раньше было, там в XML ничего не пишется. Пока нет такого фикса.
https://github.com/jmcnamara/libxlsxwri ... master/src тут можно отслеживать
https://github.com/jmcnamara/libxlsxwri ... master/src тут можно отслеживать
RaFaeL
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Обновил шапку
Исправлено: невозможно было установить нулевой отступ в колонтитулах
Исправлено: невозможно было установить нулевой отступ в колонтитулах
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
Я внёс мелкие исправления в свой пример расчёта ширины колонки, и хочу сказать, что в Microsoft Excel попадание практически 100% по кол-ву строк. Пробовал на очень разных текстах, размерах и видах шрифтов. Работает чётко и предсказуемо.finsoftrz писал(а): 03 Февраль 2018, 14:04алгоритм точного перевода единиц измерения экранного контрола в экселевские
А вот с Apache Calc - беда. Точнее дурдом. Во-первых, очень сильно выбешивает перевод и округление в метрические ед. измерения.
Во вторых, одиночная строка почему-то может быть от 0.37 до 0.42 см. (8 размер шрифта) в зависимости от контекста.
Далее, даже визуально видно, что межстрочный интервал меньше чем в Microsoft Excel и как следствие строка больше текста.
Подозреваю, что Ваш 0.75 вот здесь и появляется ...

Make Clarion Great Again ! 
Игорь Столяров
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
Есть предложение сделать возможность пользовательских расширений в библиотеке XLSXWriter.
1. Добавить в комплект файл xlsxuser.clw с пустыми секциями.
2. В файлах xlsxequates.inc, xlsxwriter.inc, xlsxwriter.clw в нужных местах сделать соответствующие вставки:
В общем-то и всё. Теперь можно будет в xlsxuser.clw добавить и переобъявить константы, ввести свои методы и т.д.
Например, у меня уже есть с десяток разных пользовательских методов: инициализация и настройка файла XLSX, сохранение с экспортом и различными вариантами записи файла, работа с графикой, установка рамок по настройке программы, расчёт высоты строк ....
При реальной работе это неизбежно !
Сейчас приходится всё это таскать между приложениями как процедуры, что категорически неудобно. При этом можно будет оперативно обновлять библиотеку (кроме файла xlsxuser.clw), а тем, кто пользуется базовым комплектом библиотеки - это абсолютно не помешает.
Спасибо за рассмотрение !
1. Добавить в комплект файл xlsxuser.clw с пустыми секциями.
Код: Выделить всё
! --- для xlsxequates.inc
Section('_XLSX_UserDefineConstant_')
! --- для xlsxwriter.inc
Section('_XLSX_UserDefineData_')
Section('_XLSX_UserClassData_')
Section('_XLSX_UserClassMetod_')
! --- для xlsxwriter.clw
Section('_XLSX_UserMetod_')
...
Код: Выделить всё
Include('xlsxuser.clw','_XLSX_UserDefineConstant_')
...
Include('xlsxuser.clw','_XLSX_UserDefineData_')
и т.д.
Например, у меня уже есть с десяток разных пользовательских методов: инициализация и настройка файла XLSX, сохранение с экспортом и различными вариантами записи файла, работа с графикой, установка рамок по настройке программы, расчёт высоты строк ....
При реальной работе это неизбежно !
Сейчас приходится всё это таскать между приложениями как процедуры, что категорически неудобно. При этом можно будет оперативно обновлять библиотеку (кроме файла xlsxuser.clw), а тем, кто пользуется базовым комплектом библиотеки - это абсолютно не помешает.
Спасибо за рассмотрение !

Make Clarion Great Again ! 
Игорь Столяров
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Неправильный подход, должно быть наоборот - у вас свой класс по обработке данных, в нем ссылка на xlsxwriter, соответственно работаете вашкласс.расчетвысотыстроки вашкласс.xlsx.writestring
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
С объявлением своего класса на основании родительского - понятно ! 
Но это очень громозко и неудобно ...
Мне в каждом приложении (DLL) нужно будет переобъявлять класс,
вводить константы и данные (не входящие в класс) и т.д. Путаница жуткая уже сейчас.
Уже и так есть имена тех же рамок из 3-х имён.
Одно другому - не мешает.
Можно объявлять класс на основании родительского, можно модифицировать через секции.
Кому как удобно ...

Но это очень громозко и неудобно ...

вводить константы и данные (не входящие в класс) и т.д. Путаница жуткая уже сейчас.

Уже и так есть имена тех же рамок из 3-х имён.
Одно другому - не мешает.
Можно объявлять класс на основании родительского, можно модифицировать через секции.
Кому как удобно ...

Make Clarion Great Again ! 
Игорь Столяров
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Нет, не на основании родительского. Просто ваш класс, в нем ссылки на внешние классы
Кусок нашего монстра по экспорту всего во всё:
Кусок нашего монстра по экспорту всего во всё:
Код: Выделить всё
ReportMaker CLASS,TYPE,MODULE('bngrep.clw'),LINK('bngrep',_ABCLinkMode_),DLL(_ABCDllMode_)
RMGlobal &ReportMakerGlobal
FC &BNGFormatClass
CR &BNGCreateRepClass
CQ &CtrlQueueType
VARQueue &VARQueueType
PreviewQueue &PreviewQueueType
INIMgr &INIClass
ER &BNGExportRepClass
EC &RMEValuateClass
AttachQueue &RMAttachMailQueueType
EAccountQueue &EAccountQueueType
...
ExcelString CSTRING(8000)
OleObject LONG
MyExcel &MSExcelClass
MyWord &MSWordClass
MyNativeExcel &TWorkbook
MyXlsx &xlsxwriter
MyReport &REPORT
WMFG GROUP(WMFExportOptions),PRE(WMF)
END
RTFG GROUP(RTFExportOptions),PRE(RTF)
END
HTMLG GROUP(HTMLExportOptions),PRE(HTML)
END
PDFG GROUP(PDFExportOptions),PRE(PDF)
END
PNGG GROUP(WMFExportOptions),PRE(PNG)
END
...
ExcelFormat BYTE
ExcelFileName CSTRING(256)
RunExcel BYTE
...
RaFaeL
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
Буду пробовать ... Тогда нужно переделывать весь свой код и вводить определения вроде:
Жесть. 
Код: Выделить всё
Loc:ReportMaker.MyXLSX.Format.Top.Format = XLSX:BORDER_DASHED

Make Clarion Great Again ! 
Игорь Столяров
- Дед Пахом
- Старичок
- Сообщения: 3306
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
libxlsxwriter for Clarion
На кой ляд класс в приложении объявлять? include('myxlsx.inc')
С уважением, ДП
Дед Пахом
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5321
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
На мой вкус как раз проще всего наследовать. Это правильно с точки зрения ООП. Заодно будет повод потренить в текстовом редакторе в Clarion10... 

C6/C12, ШВС, tps/btrieve.
finsoftrz
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
libxlsxwriter for Clarion
Понял ! И проникся глубиной вопроса. 
1. Я пока ручками, при обновлении библиотеки, лучше вставлю 3 строчки кода, чем буду постоянно при работе травмировать
себе мозг 5-ти этажными конструкциями и переделывать сейчас полностью весь код экспорта отчётов.
У меня всё простенько, нет универсальных методов генерации отчётов, и я не хочу без необходимости усложнять простое.
2. Согласен, если делать грамотно, нужно наследовать класс и т.д. Но это отдельная и интересная история, которая
опять-таки кроме отладки, приведёт к переписке кода и т.д. Потом.

1. Я пока ручками, при обновлении библиотеки, лучше вставлю 3 строчки кода, чем буду постоянно при работе травмировать
себе мозг 5-ти этажными конструкциями и переделывать сейчас полностью весь код экспорта отчётов.
У меня всё простенько, нет универсальных методов генерации отчётов, и я не хочу без необходимости усложнять простое.
2. Согласен, если делать грамотно, нужно наследовать класс и т.д. Но это отдельная и интересная история, которая
опять-таки кроме отладки, приведёт к переписке кода и т.д. Потом.

Make Clarion Great Again ! 
Игорь Столяров
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5321
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
Время, только время и получаемый опыт позволяют нам все осмыслить и разложить по полочкам...
C6/C12, ШВС, tps/btrieve.
finsoftrz
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Мне кажется, лучше сразу сделать по уму и потом добавление нового типа экспорта будет делаться именно в три строчки. Хотя дело ваше. Но в библиотеку никаких вставок точно не буду добавлять
RaFaeL
Вернуться в «Готовые программы, шаблоны, библиотеки...»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)