libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Да, спасибо. Так получается (я пробовал -1).
Получается, что если "установить" высоту строки в 15 (по умолчанию), то это просто игнорируется и не портит WrapText ...
Получается, что если "установить" высоту строки в 15 (по умолчанию), то это просто игнорируется и не портит WrapText ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Проверил группировку строк на всех режимах - всё работает ! Спасибо !
Возможности настройки очень впечатляют, но некоторые решения не очевидны.
Впрочем, подождём официального описания С версии библиотеки, возможно некоторые места прояснятся.
(Python не очень понятный язык, да и там своя специфика реализации LibXLSXWriter ...)
Возможности настройки очень впечатляют, но некоторые решения не очевидны.
Впрочем, подождём официального описания С версии библиотеки, возможно некоторые места прояснятся.
(Python не очень понятный язык, да и там своя специфика реализации LibXLSXWriter ...)
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Для работы с группировкой строк / колонок просю добавить две встроенные константы библиотеки LibXLSXWriter:
Спасибо !
Код: Выделить всё
XLSX:LXW_DEF_COL_WIDTH EQUATE(8.43)
XLSX:LXW_DEF_ROW_HEIGHT EQUATE(15.0)
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
В голове не запомнится чтоль? Ну добавлю. Может еще сделаю значение размера необязательным
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Давно запомнилось уже !
Но раз эти размеры высоты / ширины в библиотеке вынесли на константы, значит они потом могут подстраиваться ...
Кто знает, что будет в том же Microsoft Office 2019 ? Никто не знает ... И ищи потом по всему коду эти "пятнашки" ...
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Сделал параметр размера необязательным, если не указан, то в библиотеку передается значение по умолчанию, которое затем игнорируется
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Тогда должно получиться очень хорошо !
Я пока не могу понять, зачем автор LibXLSXWriter завязал группировку на методе установки параметров строки (колонок) ...
Это разные действия по сути. Там ещё 3-ий параметр (Hiden) работает по разному в зависимости от наличия 4 и 5 (Level / Collapse).
Я пока не могу понять, зачем автор LibXLSXWriter завязал группировку на методе установки параметров строки (колонок) ...
Это разные действия по сути. Там ещё 3-ий параметр (Hiden) работает по разному в зависимости от наличия 4 и 5 (Level / Collapse).
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Простой вариант добавления к XLSXWriter своих методов, данных и т.д. через наследование класса.
Показано в комментариях, что и где заменяется. На примере с группировкой строк. Проверено с Multi-DLL проектами.
За идею и помощь в отладке класса отдельное спасибо Деду Пахому.
Показано в комментариях, что и где заменяется. На примере с группировкой строк. Проверено с Multi-DLL проектами.
За идею и помощь в отладке класса отдельное спасибо Деду Пахому.
- Вложения
-
- myxlsx.zip
- (1.99 КБ) 86 скачиваний
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
С группировкой строк есть скользкое место ... Смотрите, что получается.
Добавляем строку в группу, а потом, в зависимости от условий просто меняем её высоту:
Т.е. получается, что при работе с группировкой строк нужно использовать SetRow() всегда с полным набором необязательных параметров.
Может быть параметр "Level = 0" и "Level не указан (не изменяется)" - это разное ?
Добавляем строку в группу, а потом, в зависимости от условий просто меняем её высоту:
Код: Выделить всё
Loc:Row = 3
XLSX.ClearFormat()
i# = XLSX.SetRow(Loc:Row, XLSX:LXW_DEF_ROW_HEIGHT, False, 1, False) ! Строка в группе (Level = 1)
....
If (например есть картинка)
i# = XLSX.SetRow(Loc:Row,100) ! Строка вылетает из группы, хотя параметров управления группировкой нет :(
end
Может быть параметр "Level = 0" и "Level не указан (не изменяется)" - это разное ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
В принципе, если ведётся работа с группировкой строк, то любая строка должна находится на каком-то уровне .....
И тогда вполне логично, что этот уровень (в т.ч. и 0) надо всегда явно указывать при любом вызове SetRow() ...
Т.е. как таковой проблемы нет ни с логикой работы, ни с реализацией.
Есть путаница из двойного назначения SetRow(), просто особенность, котору нужно учитывать.
Я у себя сделал, что-то вроде:
но это уже на любителя (см. класс расширения XLSXWriter ниже).
И тогда вполне логично, что этот уровень (в т.ч. и 0) надо всегда явно указывать при любом вызове SetRow() ...
Т.е. как таковой проблемы нет ни с логикой работы, ни с реализацией.
Есть путаница из двойного назначения SetRow(), просто особенность, котору нужно учитывать.
Я у себя сделал, что-то вроде:
Код: Выделить всё
XLSX.SetRowLevel(0)
XLSX.WriteMyString(Loc:Row,Loc:Col, 'ГРУППА')
XLSX.SetRowLevel(1)
XLSX.WriteMyString(Loc:Row,Loc:Col, 'Строка 1')
XLSX.WriteMyString(Loc:Row,Loc:Col, 'Строка 2')
...
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Да там то пусто, то густо
Встраивал работу с погрешностями, на каждую галочку отдельная функция, хотя можно было сделать одну на все галочки
С другой сторону, для функции "проверка данных" наоборот - одна функция с ого-го какой структурой как параметр
Придется как-то с этим жить ) Хотя я уже научился читать и писать данные напрямую в память, если надо. Можно половину функций на свои заменить )
Встраивал работу с погрешностями, на каждую галочку отдельная функция, хотя можно было сделать одну на все галочки
С другой сторону, для функции "проверка данных" наоборот - одна функция с ого-го какой структурой как параметр
Придется как-то с этим жить ) Хотя я уже научился читать и писать данные напрямую в память, если надо. Можно половину функций на свои заменить )
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Я уже как-то пытался идти по этому пути, когда хотел сделать быстрый контекстый поиск в строках.
Продолбился, но сделал. Получил выигрыш в скорости с Instring/Match на уровне погрешности (1-2%) ....
Хотя на форумах Delphi обещали "цигель, цигель ай-лю-лю". В Clarion слишком хороший свой код для этого.
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Я немного о другом. Можно вызывать функцию, которая установит свойство объекта в нужное значение, а можно это значение установить прямой записью в память по адресу. Полезно, если функции такой по каким-то причинам нет. Например, по АПИ нельзя получить указатель на ось https://github.com/jmcnamara/libxlsxwriter/issues/142 но я его получаю напрямую из памяти по смещению
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Доработал библиотеку, готово 98% функций, кроме
Эти пока не буду добавлять
Обновил шапку
Если то что было раньше можно считать бетой, это уже RC1. Релиз будет с обновлением родительской библиотеки до 0.7.6
Код: Выделить всё
worksheet_data_validation_cell
worksheet_data_validation_range
worksheet_protect
format_set_unlocked
format_set_hidden
Обновил шапку
Если то что было раньше можно считать бетой, это уже RC1. Релиз будет с обновлением родительской библиотеки до 0.7.6