libxlsxwriter for Clarion

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

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

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

libxlsxwriter for Clarion

Сообщение RaFaeL »

Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
Вложения
libxlsxwriter.zip
Версия 1.5 от 30.12.2021 на основе библиотеки 1.1.4
(276.26 КБ) 368 скачиваний
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1389
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 9 раз
Поблагодарили: 2 раза
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Из документации "It should be noted that the split is specified at the top or left of a cell"
Т.е. чтобы заморозить первую строку надо передать 2, сплит появится над 2й строкой
kreator
✯ Ветеран ✯
Сообщения: 5080
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 23 раза

libxlsxwriter for Clarion

Сообщение kreator »

RaFaeL писал(а): 17 Май 2018, 23:15 Из документации "It should be noted that the split is specified at the top or left of a cell"
Т.е. чтобы заморозить первую строку надо передать 2, сплит появится над 2й строкой
По крайней мере это нелогично. На 99% уверен, что в xml пишется единица.
We are hard at work… for you. :)
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

libxlsxwriter for Clarion

Сообщение Артур »

RaFaeL писал(а): 31 Январь 2018, 17:11"To border" - "окаймлять, граничить, обшивать"
No border - не окаймлять )) (перевод с russian english)
(правильнее конечно будет do not border)
Прошу добавить в пример прорисовку частичных бордюров (низ, верх, низ и правый и т.п.)
Любить и обещать ничего не стоит
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1389
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 9 раз
Поблагодарили: 2 раза
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

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

libxlsxwriter for Clarion

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

Да всё есть в этой ветке форума … Вот пример кода просто из головы:

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

        XLSX.ClearFormat()
        
        ! Рисуем верхнюю и нижнюю полоски обрамления ячейки
        
        XLSX.Format.Bottom.Format = XLSX:BORDER_DOUBLE
        XLSX.Format.Top.Format      = XLSX:BORDER_DOUBLE
        !XLSX.Format.Left.Format     = XLSX:BORDER_DOUBLE
        !XLSX.Format.Right.Format   = XLSX:BORDER_DOUBLE
        
        XLSX.SetFormat()        
        XLSX.WriteBlank(2,2)
        
        ! Убираем прорисовку верхней полоски
        
        XLSX.Format.Top.Format      = XLSX:NoBorder
        XLSX.SetFormat()        
        XLSX.WriteBlank(4,4)
        
        ! и т.д.        
Make Clarion Great Again ! 😎
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

libxlsxwriter for Clarion

Сообщение Артур »

Игорь Столяров писал(а): 23 Май 2018, 23:42Да всё есть в этой ветке форума …
Спасибо за пример
Любить и обещать ничего не стоит
PavelNK
Старожил
Сообщения: 263
Зарегистрирован: 15 Март 2011, 8:02

libxlsxwriter for Clarion

Сообщение PavelNK »

Решил попробовать сей замечательный продукт.
У меня установлен MS Excel 2003.
Практически все основное , что нужно было, заработало.
За исключением!
Не работает пересчет формул при открытии файла! Хотя в настройках галка Автоматически взведена.
Если я захожу в ячейку и ничего не меняя нажимаю Enter, то все отлично начинает пересчитываться.
Подскажите, плиз, куда копать.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

libxlsxwriter for Clarion

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

PavelNK писал(а): 25 Июнь 2018, 16:32 Подскажите, плиз, куда копать.
В документацию: https://libxlsxwriter.github.io/workshe ... 9c4a5867af
Описание процедуры worksheet_write_formula_num() - там есть про это.
И использовать расширенный вариант метода XLSX.WriteFormula().
Make Clarion Great Again ! 😎
PavelNK
Старожил
Сообщения: 263
Зарегистрирован: 15 Март 2011, 8:02

libxlsxwriter for Clarion

Сообщение PavelNK »

Игорь Столяров писал(а): 25 Июнь 2018, 17:05В документацию: https://libxlsxwriter.github.io/workshe ... 9c4a5867af
Описание процедуры worksheet_write_formula_num() - там есть про это.
И использовать расширенный вариант метода XLSX.WriteFormula().
Огромное спасибо за подсказку!

Libxlsxwriter doesn't calculate the value of a formula and instead stores the value 0 as the formula result. It then sets a global flag in the XLSX file to say that all formulas and functions should be recalculated when the file is opened.
This is the method recommended in the Excel documentation and in general it works fine with spreadsheet applications.
However, applications that don't have a facility to calculate formulas, such as Excel Viewer, or some mobile applications will only display the 0 results.

Вот оно как оказывается!
У меня в Excel'е при открытии автоматически формулы не пересчитываются.
Приходится считать самому и подставлять значения :( :( :(
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

libxlsxwriter for Clarion

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

PavelNK писал(а): 25 Июнь 2018, 20:31У меня в Excel'е при открытии автоматически формулы не пересчитываются
Я конечно был удивлён, что Microsoft Excel 2003 вообще поддерживает формат XLSX.
До этого момента считал, открытые форматы DOCX и XLSX появились в Microsoft Office 2007 ...
Но в любом случае, уже можно побаловать себя обновлением офисного пакета ... ;)
Make Clarion Great Again ! 😎
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

PavelNK писал(а): 25 Июнь 2018, 20:31У меня в Excel'е при открытии автоматически формулы не пересчитываются.
Предлагаю автору врапера (RaFael) вот такое изменение в workbook.c:

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

STATIC void
_write_calc_pr(lxw_workbook *self)
{
    struct xml_attribute_list attributes;
    struct xml_attribute *attribute;

    LXW_INIT_ATTRIBUTES();
    LXW_PUSH_ATTRIBUTES_STR("calcId", "124519");
-   LXW_PUSH_ATTRIBUTES_STR("fullCalcOnLoad", "1");
+   LXW_PUSH_ATTRIBUTES_STR("calcCompleted", "0");

    lxw_xml_empty_tag(self->file, "calcPr", &attributes);

    LXW_FREE_ATTRIBUTES();
}
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

libxlsxwriter for Clarion

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

vic7tar писал(а): 27 Июнь 2018, 17:29вот такое изменение в workbook.c
А Вы не хотите, такие вещи предложить вот здесь: https://github.com/jmcnamara/libxlsxwriter/issues
Ибо нужно хорошо представлять результат таких действий и их последствия в комплексе ...
Make Clarion Great Again ! 😎
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Нет, не хочу. А какие тут могут быть последствия, да еще и в комплексе?
Параметр fullCalcOnLoad вообще можно выкинуть.
Последний раз редактировалось vic7tar 27 Июнь 2018, 21:45, всего редактировалось 1 раз.
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7680
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 26 раз
Поблагодарили: 68 раз

libxlsxwriter for Clarion

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

vic7tar писал(а): 27 Июнь 2018, 20:45А какие тут могут быть последствия, да еще и в комплексе
Конкретно в данном случае - я конечно же не знаю ...
Но сама по себе спецификация формата XLSX уже имеет историю, и поэтому нужно смотреть реакцию Microsoft Excel
разных поколений, а также бесплатных офисных пакетов, многочисленных просмотрщиков XLSX и т.д.

Это и есть проверка в комплексе. Возможно Вы всё это и так уже проверили.
В указанной мною группе разработки, как раз такие вопросы и обсуждаются. Поэтому я и предложил. :)
Make Clarion Great Again ! 😎
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1389
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 9 раз
Поблагодарили: 2 раза
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Я не буду править исходный код библиотеки
Но вы можете собрать себе свой вариант и заменить dll
Ответить