libxlsxwriter for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение 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
Ну тоже дело.
Сейчас попробую скачать и пересобрать
Последний раз редактировалось RaFaeL 03 Февраль 2018, 20:30, всего редактировалось 1 раз.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

RaFaeL писал(а): 03 Февраль 2018, 20:27Только это не про группировки
В примерах появилось !

Код: Выделить всё

    if (user_options) {
        hidden = user_options->hidden;
        level = user_options->level;
        collapsed = user_options->collapsed;
    }
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Это и раньше было, там в XML ничего не пишется. Пока нет такого фикса.
https://github.com/jmcnamara/libxlsxwri ... master/src тут можно отслеживать
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Обновил шапку
Исправлено: невозможно было установить нулевой отступ в колонтитулах
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Февраль 2018, 14:04алгоритм точного перевода единиц измерения экранного контрола в экселевские
Я внёс мелкие исправления в свой пример расчёта ширины колонки, и хочу сказать, что в Microsoft Excel попадание практически 100% по кол-ву строк. Пробовал на очень разных текстах, размерах и видах шрифтов. Работает чётко и предсказуемо.

А вот с Apache Calc - беда. Точнее дурдом. Во-первых, очень сильно выбешивает перевод и округление в метрические ед. измерения.
Во вторых, одиночная строка почему-то может быть от 0.37 до 0.42 см. (8 размер шрифта) в зависимости от контекста.
Далее, даже визуально видно, что межстрочный интервал меньше чем в Microsoft Excel и как следствие строка больше текста.
Подозреваю, что Ваш 0.75 вот здесь и появляется ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Есть предложение сделать возможность пользовательских расширений в библиотеке 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), а тем, кто пользуется базовым комплектом библиотеки - это абсолютно не помешает.

Спасибо за рассмотрение ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Неправильный подход, должно быть наоборот - у вас свой класс по обработке данных, в нем ссылка на xlsxwriter, соответственно работаете вашкласс.расчетвысотыстроки вашкласс.xlsx.writestring
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

С объявлением своего класса на основании родительского - понятно ! :)

Но это очень громозко и неудобно ... :( Мне в каждом приложении (DLL) нужно будет переобъявлять класс,
вводить константы и данные (не входящие в класс) и т.д. Путаница жуткая уже сейчас. :(
Уже и так есть имена тех же рамок из 3-х имён.

Одно другому - не мешает.
Можно объявлять класс на основании родительского, можно модифицировать через секции.
Кому как удобно ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение 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
...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Буду пробовать ... Тогда нужно переделывать весь свой код и вводить определения вроде:

Код: Выделить всё

   Loc:ReportMaker.MyXLSX.Format.Top.Format = XLSX:BORDER_DASHED
Жесть. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение Дед Пахом »

Игорь Столяров писал(а): 04 Февраль 2018, 10:40Мне в каждом приложении (DLL) нужно будет переобъявлять класс
На кой ляд класс в приложении объявлять? include('myxlsx.inc')
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

На мой вкус как раз проще всего наследовать. Это правильно с точки зрения ООП. Заодно будет повод потренить в текстовом редакторе в Clarion10... :-)
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Понял ! И проникся глубиной вопроса. :)

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

2. Согласен, если делать грамотно, нужно наследовать класс и т.д. Но это отдельная и интересная история, которая
опять-таки кроме отладки, приведёт к переписке кода и т.д. Потом. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

libxlsxwriter for Clarion

Сообщение finsoftrz »

Время, только время и получаемый опыт позволяют нам все осмыслить и разложить по полочкам...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

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