Страница 28 из 62
libxlsxwriter for Clarion
Добавлено: 12 Февраль 2017, 14:06
RaFaeL
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (
https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
libxlsxwriter for Clarion
Добавлено: 03 Февраль 2018, 20:27
RaFaeL
Игорь Столяров писал(а): 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
Ну тоже дело.
Сейчас попробую скачать и пересобрать
libxlsxwriter for Clarion
Добавлено: 03 Февраль 2018, 20:29
Игорь Столяров
RaFaeL писал(а): 03 Февраль 2018, 20:27Только это не про группировки
В примерах появилось !
Код: Выделить всё
if (user_options) {
hidden = user_options->hidden;
level = user_options->level;
collapsed = user_options->collapsed;
}
libxlsxwriter for Clarion
Добавлено: 03 Февраль 2018, 20:36
RaFaeL
Это и раньше было, там в XML ничего не пишется. Пока нет такого фикса.
https://github.com/jmcnamara/libxlsxwri ... master/src тут можно отслеживать
libxlsxwriter for Clarion
Добавлено: 03 Февраль 2018, 21:59
RaFaeL
Обновил шапку
Исправлено: невозможно было установить нулевой отступ в колонтитулах
libxlsxwriter for Clarion
Добавлено: 03 Февраль 2018, 22:47
Игорь Столяров
finsoftrz писал(а): 03 Февраль 2018, 14:04алгоритм точного перевода единиц измерения экранного контрола в экселевские
Я внёс мелкие исправления в свой пример расчёта ширины колонки, и хочу сказать, что в Microsoft Excel попадание практически 100% по кол-ву строк. Пробовал на очень разных текстах, размерах и видах шрифтов. Работает чётко и предсказуемо.
А вот с Apache Calc - беда. Точнее дурдом. Во-первых, очень сильно выбешивает перевод и округление в метрические ед. измерения.
Во вторых, одиночная строка почему-то может быть от 0.37 до 0.42 см. (8 размер шрифта) в зависимости от контекста.
Далее, даже визуально видно, что межстрочный интервал меньше чем в Microsoft Excel и как следствие строка больше текста.
Подозреваю, что Ваш 0.75 вот здесь и появляется ...

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 10:21
Игорь Столяров
Есть предложение сделать возможность пользовательских расширений в библиотеке XLSXWriter.
1. Добавить в комплект файл xlsxuser.clw с пустыми секциями.
Код: Выделить всё
! --- для xlsxequates.inc
Section('_XLSX_UserDefineConstant_')
! --- для xlsxwriter.inc
Section('_XLSX_UserDefineData_')
Section('_XLSX_UserClassData_')
Section('_XLSX_UserClassMetod_')
! --- для xlsxwriter.clw
Section('_XLSX_UserMetod_')
...
2. В файлах xlsxequates.inc, xlsxwriter.inc, xlsxwriter.clw в нужных местах сделать соответствующие вставки:
Код: Выделить всё
Include('xlsxuser.clw','_XLSX_UserDefineConstant_')
...
Include('xlsxuser.clw','_XLSX_UserDefineData_')
и т.д.
В общем-то и всё. Теперь можно будет в xlsxuser.clw добавить и переобъявить константы, ввести свои методы и т.д.
Например, у меня уже есть с десяток разных пользовательских методов: инициализация и настройка файла XLSX, сохранение с экспортом и различными вариантами записи файла, работа с графикой, установка рамок по настройке программы, расчёт высоты строк ....
При реальной работе это неизбежно !
Сейчас приходится всё это таскать между приложениями как процедуры, что категорически неудобно. При этом можно будет оперативно обновлять библиотеку (кроме файла xlsxuser.clw), а тем, кто пользуется базовым комплектом библиотеки - это абсолютно не помешает.
Спасибо за рассмотрение !

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 10:27
RaFaeL
Неправильный подход, должно быть наоборот - у вас свой класс по обработке данных, в нем ссылка на xlsxwriter, соответственно работаете вашкласс.расчетвысотыстроки вашкласс.xlsx.writestring
libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 10:40
Игорь Столяров
С объявлением своего класса на основании родительского - понятно !
Но это очень громозко и неудобно ...

Мне в каждом приложении (DLL) нужно будет переобъявлять класс,
вводить константы и данные (не входящие в класс) и т.д. Путаница жуткая уже сейчас.

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

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 10:58
RaFaeL
Нет, не на основании родительского. Просто ваш класс, в нем ссылки на внешние классы
Кусок нашего монстра по экспорту всего во всё:
Код: Выделить всё
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
...
libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 11:13
Игорь Столяров
Буду пробовать ... Тогда нужно переделывать весь свой код и вводить определения вроде:
Код: Выделить всё
Loc:ReportMaker.MyXLSX.Format.Top.Format = XLSX:BORDER_DASHED
Жесть.

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 11:32
Дед Пахом
Игорь Столяров писал(а): 04 Февраль 2018, 10:40Мне в каждом приложении (DLL) нужно будет переобъявлять класс
На кой ляд класс в приложении объявлять? include('myxlsx.inc')
libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 11:37
finsoftrz
На мой вкус как раз проще всего наследовать. Это правильно с точки зрения ООП. Заодно будет повод потренить в текстовом редакторе в Clarion10...

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 13:14
Игорь Столяров
Понял ! И проникся глубиной вопроса.
1. Я пока ручками, при обновлении библиотеки, лучше вставлю 3 строчки кода, чем буду постоянно при работе травмировать
себе мозг 5-ти этажными конструкциями и переделывать сейчас полностью весь код экспорта отчётов.
У меня всё простенько, нет универсальных методов генерации отчётов, и я не хочу без необходимости усложнять простое.
2. Согласен, если делать грамотно, нужно наследовать класс и т.д. Но это отдельная и интересная история, которая
опять-таки кроме отладки, приведёт к переписке кода и т.д. Потом.

libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 13:49
finsoftrz
Время, только время и получаемый опыт позволяют нам все осмыслить и разложить по полочкам...
libxlsxwriter for Clarion
Добавлено: 04 Февраль 2018, 16:12
RaFaeL
Игорь Столяров писал(а): 04 Февраль 2018, 13:141. Я пока ручками, при обновлении библиотеки, лучше вставлю 3 строчки кода, чем буду постоянно при работе травмировать
себе мозг 5-ти этажными конструкциями и переделывать сейчас полностью весь код экспорта отчётов.
Мне кажется, лучше сразу сделать по уму и потом добавление нового типа экспорта будет делаться именно в три строчки. Хотя дело ваше. Но в библиотеку никаких вставок точно не буду добавлять