libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1389
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 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 КБ) 368 скачиваний
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
libxlsxwriter for Clarion
"автовыравнивание ширины" - это тафтология, если задуматься над смыслом.
Насколько мне известно, такого (ужаса) нет в электронных таблицах.
Есть АВТОПОДБОР ВЫСОТЫ ячейки по значению содержимого. Но это иное:
Код: Выделить всё
MyXLSX.Format.WrapText = True
MyXLSX.SetFormat()
MyXLSX.WriteString( ...
! Внимание ! С XLSX.Merge() работать не будет, там нужно делать иначе.
Make Clarion Great Again !
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Умный да?!Игорь Столяров писал(а): ↑25 Декабрь 2022, 13:11 "автовыравнивание ширины" - это тафтология, если задуматься над смыслом.
Автоподбор по ширине по содержимому. Аналог двойного клика по разделителю в шапке таблицы
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
libxlsxwriter for Clarion
Просто никогда такое не использовал ...
Наверно всё-таки УСТАНОВКА ШИРИНЫ ячейки по содержанию.
Попробуйте вот так:
Код: Выделить всё
MyXLSX.Format.Indent = True
MyXLSX.SetFormat()
MyXLSX.WriteString( ...
Make Clarion Great Again !
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Не получается. Сшибает напрочь .Format.Align. Ну и фиг с ним
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libxlsxwriter for Clarion
юИгорь Столяров писал(а): ↑25 Декабрь 2022, 12:06Я таки Вам больше скажу ...
Нафига вообще использовать формат электронных таблиц XLSX для обмена данными ?
Потому что во многих случаях это удобно. У нас обмен, в основном, xls. Xlsx это похоже, с претензией на "современный формат". Удобно потому, что и посмотреть, и распечатать, и загрузить, и поработать напрямую можно. Вот зачем нужен json, когда есть xml, это больший вопрос. Как я понимаю, чтобы упростить процесс разбора, вытащили старую библу, созданную для java. Но, скорее всего, такими темпами развития она скоро вполне может превратиться в монстра наподобии xml. Тогда снова вытащат на свет csv и так по кругу.
C6/C11, ШВС, tps/btrieve.
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Разобрался с автоподбором ширины. Пришлось делать через SetColumn. Но всплыла очень интересная фича (полностью с ней не разбирался, обошёл и хватит): если установить ширину для колонки, когда есть текст лишь в "заголовке" листа, то всё замечательно, а вот если сделать когда заполнена хоть одна ячейка в это колонке уже в "теле" листа, то её свойства (Format.Border.Format, в частности) автоматически копируются в данной колонке для всех строк до максимально возможной.
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
У вас этот файл автоматически испортируется в базу? Мне этого не понять...
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
libxlsxwriter for Clarion
Это человеко-ориентированный обмен. Я вот сначала посмотрю, а потом пусь программа загружает и т.д.
XLSX не удобен и медленен в разборе, нет прямого доступа (хотя на githab попытки есть, но так себе ...)
Для обмена удобны текстовые теговые форматы (XML, JSON и т.д.)- впрочем они для этого и были созданы.
Всё может быть - будет пример без местных хитросплетений, давайте посмотрим.
Свойства к сожалению не копируются (но очень бы хотелось конечно !).
Свойства устанавливаются и далее применяются при выводе (как настройка кисти в PaintBrash).
Если Вы их не сбрасываете XLSX.ClearFormat() - то они действуют, в т.ч. и настройка рамок.
Установки рамок для диапазона ячеек (как в Excel.OLE) тоже нет, к сожалению.
Make Clarion Great Again !
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Сбрасывал, раз по 10 на строку. )))
Попробую. Очень тяжело вырезать из библиотеки.
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libxlsxwriter for Clarion
По сути да, если говорить про обмен накладными между поставщиками и покупателями. Разумеется, надо указать, в каких колонках что находится. У меня используется для этих целей справочник планов обмена, ссылка на который указывается у контрагента. Некоторые, например, в 1с видел в нескольких конфигурациях, каждый раз перед загрузкой предлагают сопоставить. В общем, это самый распространенный обмен накладными. Аналогично, очень часто используется при переносе информации из старых программ в новые.Губин Игорь писал(а): ↑25 Декабрь 2022, 16:51У вас этот файл автоматически испортируется в базу? Мне этого не понять...
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libxlsxwriter for Clarion
Что означает нет прямого доступа? Проще всего через ole/com. Ничем не отличается от xls. Вопрос скорости возникает при большом объеме информации, это явно не про накладные или разовую загрузку справочника товаров или остатков. Речь идет не просто про обмен, а про унификацию. Кому нужно, тот загружает, кому не нужно, использует иначе. Не надо согласовывать теги и т.п., программы у всех разные. То есть это готовый инструмент для пользователей, который есть практически во всех учетных системах.Игорь Столяров писал(а): ↑25 Декабрь 2022, 17:56Это человеко-ориентированный обмен. Я вот сначала посмотрю, а потом пусь программа загружает и т.д.
XLSX не удобен и медленен в разборе, нет прямого доступа (хотя на githab попытки есть, но так себе ...)
Для обмена удобны текстовые теговые форматы (XML, JSON и т.д.)- впрочем они для этого и были созданы.
Потом, не забывайте, что xlsx это переименованный zip, внутри которого содержимое ячеек в xml файле. Никто не запрещает распаковать и извлечь информацию напрямую. Я читал про библиотеки, которые так делают. Например, в том же php.
C6/C11, ШВС, tps/btrieve.
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
А читаете как, через подгрузку Excel?finsoftrz писал(а): ↑25 Декабрь 2022, 18:24 По сути да, если говорить про обмен накладными между поставщиками и покупателями. Разумеется, надо указать, в каких колонках что находится. У меня используется для этих целей справочник планов обмена, ссылка на который указывается у контрагента. Некоторые, например, в 1с видел в нескольких конфигурациях, каждый раз перед загрузкой предлагают сопоставить. В общем, это самый распространенный обмен накладными. Аналогично, очень часто используется при переносе информации из старых программ в новые.
10000 строк по 60 позиций в строке...
Как вариант. Но уж больно много мусора, наверное, в файле.
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
libxlsxwriter for Clarion
Сейчас я загружаю через vbscript, а в нем com объект создается. Раньше, когда не нужна была поддержка опен офиса, использовался ole. Не бывает накладных по 10000 строк и 60 атрибутов в строке. Справочник товаров при загрузке из какой-нибудь старой программы, например 1с (а в эксель формат позволяют сохранять информацию практически все более менее серьезные учетные системы) может быть больше 10 тыс строк, но это акция разовая, если займет пару минут, не критично.
В xlsx в архиве несколько подкаталогов и файлов. Насколько я помню, содержимое числовых ячеек хранится в одном основном xml, а строки (или только длинные строки) в другом (из основного ссылка на них). Это легко увидеть, переименуй xlsx в zip, распакуй и поищи в полученных xml по содержимому ячеек. В остальных файлах всякие стили, бинарные объекты и т.п.
В xlsx в архиве несколько подкаталогов и файлов. Насколько я помню, содержимое числовых ячеек хранится в одном основном xml, а строки (или только длинные строки) в другом (из основного ссылка на них). Это легко увидеть, переименуй xlsx в zip, распакуй и поищи в полученных xml по содержимому ячеек. В остальных файлах всякие стили, бинарные объекты и т.п.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1389
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Скорее всего, забываете чистить формат перед установкой чего-либо, например ширины колонкиГубин Игорь писал(а): ↑25 Декабрь 2022, 16:50 если установить ширину для колонки, когда есть текст лишь в "заголовке" листа, то всё замечательно, а вот если сделать когда заполнена хоть одна ячейка в это колонке уже в "теле" листа, то её свойства (Format.Border.Format, в частности) автоматически копируются в данной колонке для всех строк до максимально возможной.
Последний раз редактировалось RaFaeL 25 Декабрь 2022, 19:48, всего редактировалось 1 раз.
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
libxlsxwriter for Clarion
Ну да, нашёл. Но трам-тарарам, без пол литра не разобраться.
Это я только кажусь дураком! На самом деле я полный идиот!