libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 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 КБ) 997 скачиваний
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Ну я там уже был )
Это одна из двух вещей, которые реализованы в основном проекте при экспорте по OLE и не реализованы в библиотеке xlsx
(вторая - редактирование опций отображения секторов (точек) круговой диаграммы, оно в библиотеке есть, но ппц как неудобно сделано для враппера. Неудобнее только проверка данных)
Это одна из двух вещей, которые реализованы в основном проекте при экспорте по OLE и не реализованы в библиотеке xlsx
(вторая - редактирование опций отображения секторов (точек) круговой диаграммы, оно в библиотеке есть, но ппц как неудобно сделано для враппера. Неудобнее только проверка данных)
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Да. Есть вещи сделанные, но реализация конечно могла бы быть и лучше ....
Например вставка картинок. Очень хорошо, базовый функционал и всё необходимое есть.
Но приходится хранить все картинки до момента записи отчёта ....
А если, например, это реестр товаров с образцами на 50 тонн записей ?
Ведь в момент вставки вся информация о картинке уже передана библиотеке, можно было
бы сделать процесс передачи картинок последовательным ....
Например вставка картинок. Очень хорошо, базовый функционал и всё необходимое есть.
Но приходится хранить все картинки до момента записи отчёта ....

А если, например, это реестр товаров с образцами на 50 тонн записей ?
Ведь в момент вставки вся информация о картинке уже передана библиотеке, можно было
бы сделать процесс передачи картинок последовательным ....
Make Clarion Great Again ! 
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
libxlsxwriter for Clarion
Я как бы в стороне от этого, не пользуюсь Excel'ем и библиотекой. А те, кто юзает "нашу" libxlsxwriter, могли бы и оставить отзыв на ClarionHub.Игорь Столяров писал(а): 02 Февраль 2018, 7:04И сразу конкурент нарисовался со своим двухсотбаксовым интерфейсом на ClarionHUB
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Согласен. Идея Деда Пахома и здесь неплохо работает.

Но, наверно всё-таки полный satisfaction в этом вопросе невозможен в принципе, т.к. на кол-во строк ещё оказывает влияние наличие и тип рамки ячейки в таблице. Концепт метода для установки высоты строки под многострочный текст у меня получился следующий:
Код: Выделить всё
Map
XLSX_RowHeight(xlsxwriter,window,long,string,long,byte=15),long
end
XLSX_RowHeight PROCEDURE (MyXLSX_,Window_,Row_,Str_,WidthPixels_,OneRowHeight_)
Loc:Control USHORT
Loc:LineCount LONG
CODE
Window_{Prop:Pixels} = True
Loc:Control = Create(0,Create:Text)
If Loc:Control
Loc:Control{Prop:FontName} = Choose(MyXLSX_.Format.FontName <> '', MyXLSX_.Format.FontName, 'Calibri')
Loc:Control{Prop:FontSize} = Choose(MyXLSX_.Format.FontSize > 1, MyXLSX_.Format.FontSize, 11)
Loc:Control{Prop:FontStyle} = Choose(MyXLSX_.Format.FontStyle > 0, MyXLSX_.Format.FontStyle, Font:Regular)
Loc:Control{Prop:FontCharSet} = CHARSET:CYRILLIC
Loc:Control{Prop:Left} = True
Loc:Control{Prop:Width} = WidthPixels_
Loc:Control{Prop:Text} = Clip(Str_)
Loc:LineCount = Loc:Control{Prop:LineCount}
Destroy(Loc:Control)
end
Window_{Prop:Pixels} = False
Return(MyXLSX_.SetRow(Row_,Choose(Loc:LineCount > 1,Loc:LineCount,1) * OneRowHeight_))
Код: Выделить всё
Loc:Str = 'Какой-то там длиннннный текст ...'
Loc:Row = 5
Loc:MyXLSX.ClearFormat()
Loc:ErrorCode = Loc:MyXLSX.SetColumn( 2, 2,10)
Loc:ErrorCode = Loc:MyXLSX.SetColumn( 3, 3, 8)
Loc:ErrorCode = Loc:MyXLSX.SetColumn( 4, 4,40)
Loc:ErrorCode = Loc:MyXLSX.SetColumn( 5, 5,12)
Loc:ErrorCode = XLSX_RowHeight(Loc:MyXLSX,ProgressWindow,Loc:Row,Loc:Str,510,15)
Loc:ErrorCode = Loc:MyXLSX.Merge(Loc:Row, 2, Loc:Row, 5, Loc:Str)


Последний раз редактировалось Игорь Столяров 03 Февраль 2018, 22:36, всего редактировалось 1 раз.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5239
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
У меня открытое окно внутри класса упрятано, снаружи не торчит. Ширины колонок и высоты строк складываю по заданным значениям в единицах excel, переводя по ходу в мм, чтобы удобнее было контролировать по бланку в calc. Ширину потом перевожу в dialog units через коэффициент, вычисляемый путем присвоения окну prop:mm. Но почему-то в результате отклонение, поэтому умножаю на коэффициент 0.75, появляется запас и в большинстве случаев выводится все корректно. Хотя иногда строка может получиться выше. Я на этом остановился, в целом результат приемлемый.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Вам проще, т.к. Вы делаете то, что сами и будите использовать в прикладных задачах.
Можно подстаиваться под конкретный интерфейс, офисный пакет, вводить методом тыка поправки и т.д.
И всё будет супер, т.к. никому кроме Вас не нужно. А мне хотелось бы получить общее и понятное решение этого вопроса.
Можно подстаиваться под конкретный интерфейс, офисный пакет, вводить методом тыка поправки и т.д.
И всё будет супер, т.к. никому кроме Вас не нужно. А мне хотелось бы получить общее и понятное решение этого вопроса.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5239
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
Из непонятного только применение коэффициента 0.75 при расчете ширины контрола. Остальное все логично. У меня есть подозрение, что точного решения может и не быть. Вы правильно в одном из предыдущих постов написали, что разные офисные пакеты могут по разному делать переносы, хранят информацию в разных единицах измерения с неизбежными погрешностями преобразования и т.п.
К слову, столкнулся еще с багом в libre при сохранении в xlsx. Он выставляет смещения в целых единицах, а при открытии xlsx еще и пересчитывает их, в результате чего получается третье число...
И еще по случаю позволю себе маленькую ремарку насчет управления границами во враппере, которую Вы обсуждали здесь. Границы могут иметь стиль и цвет. Кроме этого признак их использования по заданной стороне. Это следует из логики организации информации в xlsx. Вы правильно заметили, что отсутствие рамки и применение стиля "без рамки" ситуации разные.
К слову, столкнулся еще с багом в libre при сохранении в xlsx. Он выставляет смещения в целых единицах, а при открытии xlsx еще и пересчитывает их, в результате чего получается третье число...
И еще по случаю позволю себе маленькую ремарку насчет управления границами во враппере, которую Вы обсуждали здесь. Границы могут иметь стиль и цвет. Кроме этого признак их использования по заданной стороне. Это следует из логики организации информации в xlsx. Вы правильно заметили, что отсутствие рамки и применение стиля "без рамки" ситуации разные.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Попробуйте обновить. На днях вышла новая версия LibreOffice 6. Красивая заставка.finsoftrz писал(а): 03 Февраль 2018, 12:12К слову, столкнулся еще с багом в libre при сохранении в xlsx.
Из тех "проблем", что мне известны - стало более корректное отображение картинок в XLSX.

Разработчики называют сие новым поколением продукта, но верить им можно не больше, чем рыбакам ...

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5239
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
Если удастся найти алгоритм точного перевода единиц измерения экранного контрола в экселевские, было бы здорово. Ведь если мы захотим еще разбивки по листам с итогами и переносами, то без подсчета высоты выведенных строк не обойтись...
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Да, это тоже хорошая опция, хотя в настоящий момент мы отчёты по листам в Microsoft Excel не разделяем.finsoftrz писал(а): 03 Февраль 2018, 14:04 Ведь если мы захотим еще разбивки по листам с итогами и переносами
А по хорошему - надо бы, те же счета-фактуры, УПД, ТОРГ-12 конечно должны иметь промежуточные итоги по листам ...
Меня сейчас больше интересует вопрос единого экспорта отчётов для всех офисных пакетов.
Экономических предпосылок для перехода всех пользователей под комфортный, но платный
Microsoft Office наблюдается чем дальше - тем меньше.
А например, та же библиотека EasyOpenOffice имеет закрытый код и зависима от версии Clarion.
И к моему глубокому сожалению, стабильно НЕ развивается (вот не хочу здесь называть вещи своими именами).
Последний официальный релиз был полтора года назад, раньше тех-поддержка отвечала хотя бы через 2 недели,
а сейчас вообще перестала.


Поэтому как говорит наш кандидат: всегда надо быть готовым ответить на внешние вызовы !

Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Вот есть библиотека, которая может читать данные из xlsx
https://sourceforge.net/projects/xlsxio/
https://sourceforge.net/projects/xlsxio/
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Судя по всему и записывать тоже.
Но совсем уж куцый функционал, заточенный на последовательную перегонку текста из XLSX в CSV и обратно.

Не, мы лучше со старым барином останемся, в libxlsxwriter всё намного приятней.

Make Clarion Great Again ! 
- Игорь Столяров
- Ветеран движения
- Сообщения: 8032
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
libxlsxwriter for Clarion
Ой ! Мне тут GitHub/John McNamara бросил пост: There is now a fix for this on the master branch ! 
Это значит, что группировка строк добавлена !?
В описании на сайте ничего нет ... А что такое "master branch" ? Может какой-то раздел для бета-тестирования ?

Это значит, что группировка строк добавлена !?
В описании на сайте ничего нет ... А что такое "master branch" ? Может какой-то раздел для бета-тестирования ?
Последний раз редактировалось Игорь Столяров 03 Февраль 2018, 20:29, всего редактировалось 2 раза.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5239
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
libxlsxwriter for Clarion
По поводу расчета ширины экранного контрола, у меня предположение, что надо учитывать рамки ячеек. Как нибудь выберу время, проверю.
C6/C12, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Писать, конечно, лучже сабжем, тут не обсуждаетсяИгорь Столяров писал(а): 03 Февраль 2018, 19:43Судя по всему и записывать тоже.
Но совсем уж куцый функционал, заточенный на последовательную перегонку текста из XLSX в CSV и обратно.
Не, мы лучше со старым барином останемся, в libxlsxwriter всё намного приятней.
А вот если надо читать, то можно и попробовать. В соседней теме вон читают )) Мне бы пригодилось для импорта данных, пока там OLE либо CSV. Без перегонки, напрямую, перегонка там сама по себе отдельно живет