Страница 4 из 62
libxlsxwriter for Clarion
Добавлено: 12 Февраль 2017, 14:06
RaFaeL
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (
https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 10:23
finsoftrz
Извините, думал, что интересно будет, так как аналогичный подход можно использовать и с библиотекой, о которой идет речь. Если админ удалит эти посты, я не против.
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 10:28
finsoftrz
George писал(а): 13 Декабрь 2017, 10:20
А умеет DExcel работать с XLSX ???
Нет, с xls. Но смысл не меняется, библиотеки для вывода в excel работают однотипно. Заменить одну на другую не должно вызвать сложностей.
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 11:28
gopstop2007
RaFaeL писал(а): 11 Декабрь 2017, 18:36
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
Подставил для вывода фото в xlsx справочника товара, не выводит.
Разобрался, из-за ограничения по буферу или zlib не может сзиповать

Если в пример добавить код ниже вы сами увидите, надеюсь
Код: Выделить всё
LOOP i# = 1 to 600 ! меньше 500 - выводит
options.x_offset=1
options.y_offset=1
options.x_scale=0.5
options.y_scale=0.5
err#=xlsx.InsertImage(i#,2,'c:\Program_2017\Exsample\libxlsxwriter_171211\Photo\image002.png',options)
end
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 11:48
RaFaeL
Выдает ошибку 8, "Function parameter validation error."
Вероятно, внутреннее ограничение
Покопал исходники, похоже что дело в количестве одновременно открытых файлов. Файл открывается сразу и не закрывается до создания файла. Автору написал.
P.S. Автор ответил что поправлено в новой версии
https://github.com/jmcnamara/libxlsxwriter/issues/106
Надо скачать и пересобрать, сейчас займусь )
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 12:50
gopstop2007
RaFaeL писал(а): 13 Декабрь 2017, 11:48
Вероятно, внутреннее ограничение
Покопал исходники, похоже что дело в количестве одновременно открытых файлов. Файл открывается сразу и не закрывается до создания файла. Автору написал.
Так и есть, так как я из блоба - BLOBTOFILE(pictures,'tmp.jpg') создаю tmp-фото, закидываю в xlsx, и сразу удалял tmp-фото, и так по циклу. В libxlsxwriter удалять tmp-фото не давало.

libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 13:51
RaFaeL
Пересобрал на текущей версии 0.7.5, проверил, работает.
Обновил стартовый пост
libxlsxwriter for Clarion
Добавлено: 13 Декабрь 2017, 23:47
gopstop2007
спасибо,

пример работает, проверю в рабочем проекте
libxlsxwriter for Clarion
Добавлено: 15 Декабрь 2017, 3:04
vic7tar
RaFael, будет ли продолжение библиотеки? Я имею ввиду функции Сhart-ов.
libxlsxwriter for Clarion
Добавлено: 15 Декабрь 2017, 3:44
icohff
RaFaeL писал(а): 11 Декабрь 2017, 18:36Если еще чего не хватает, пишите, постараюсь добавить
worksheet_write_formula
worksheet_write_formula_num
libxlsxwriter for Clarion
Добавлено: 15 Декабрь 2017, 13:58
RaFaeL
vic7tar писал(а): 15 Декабрь 2017, 3:04RaFael, будет ли продолжение библиотеки? Я имею ввиду функции Сhart-ов.
Вообще собирался, решил подождать пока будет готово вот это
https://github.com/jmcnamara/libxlsxwriter/issues/91
И что-то там многовато функций ))
libxlsxwriter for Clarion
Добавлено: 15 Декабрь 2017, 15:40
RaFaeL
icohff писал(а): 15 Декабрь 2017, 3:44worksheet_write_formula
worksheet_write_formula_num
Пробуйте
libxlsxwriter for Clarion
Добавлено: 16 Декабрь 2017, 22:03
Игорь Столяров
Можно я тоже буду спрашивать непонятности ?

Если буду тупить - не ругайтесь, я быстро учусь.
Нельзя вернуться к рисованию нормальным шрифтом.
Т.е. вот так не получается:
Код: Выделить всё
MyXLSX.Format.FontStyle = Font:Bold
MyXLSX.SetFormat()
! Выводим жирным шрифтом
MyXLSX.Format.FontStyle = Font:Regular
MyXLSX.SetFormat()
! И всё равно жирный шрифт :(
Приходится делать не очевидно:
Код: Выделить всё
....
Clear(MyXLSX.Format.FontStyle)
MyXLSX.SetFormat()
! OK - шрифт вернулся к нормальному ...
libxlsxwriter for Clarion
Добавлено: 16 Декабрь 2017, 22:40
Ал
Игорь Столяров писал(а): 16 Декабрь 2017, 22:03
Можно я тоже буду спрашивать непонятности ?

Если буду тупить - не ругайтесь, я быстро учусь.
Нельзя вернуться к рисованию нормальным шрифтом.
Т.е. вот так не получается:
Код: Выделить всё
MyXLSX.Format.FontStyle = Font:Bold
MyXLSX.SetFormat()
! Выводим жирным шрифтом
MyXLSX.Format.FontStyle = Font:Regular
MyXLSX.SetFormat()
! И всё равно жирный шрифт :(
насколько я понял - так и должно быть..., все "штатно" - последующие setformat добавляют к предыдущим установкам новые свойства, т.е. если б было после болд не болд а италик, то выдал бы жирным курсивом, см. пример на гит..
https://clck.ru/CJr33
libxlsxwriter for Clarion
Добавлено: 16 Декабрь 2017, 23:16
RaFaeL
Ну я тоже только учусь, поэтому там просто написана ерунда )
Попробуйте новый вариант
libxlsxwriter for Clarion
Добавлено: 17 Декабрь 2017, 8:05
Игорь Столяров
Да ! Спасибо, теперь возврат к обычному шрифту работает.
Я, что-то никак не могу понять божественный замысел автора по работе с диапазонами ячеек.

Примеры на сайте смотрел ... Предположим, хочу закрасить 2 диапазона ячеек.
Добавляем:
Код: Выделить всё
MAP
MODULE('libxlsxwriter.dll')
...
worksheet_set_selection(LONG worksheet,LONG first_row,LONG first_col, |
LONG last_row,LONG last_col),LONG,RAW,C,NAME('worksheet_set_selection')
xlsxwriter CLASS
...
SetRange PROCEDURE(LONG first_row_,LONG first_col_,LONG last_row_,LONG last_col_),LONG
xlsxwriter.SetRange PROCEDURE(LONG first_row_,LONG first_col_,LONG last_row_,LONG last_col_)
CODE
return worksheet_set_selection(SELF.ActiveWorksheet,first_row_-1,first_col_-1,last_row_-1,last_col_-1)
Теперь, по идее, должно работать следующее:
Код: Выделить всё
xlsx.ClearFormat() ! Сбросили формат
xlsx.SetFormat()
err# = xlsx.SetRange(1,1,2,2) ! Применить к диапазону
xlsx.Format.Color=color:yellow
xlsx.SetFormat() ! Установить формат
err# = xlsx.SetRange(3,4,5,6) ! Применить к диапазону
xlsx.Format.Color=color:Red
xlsx.SetFormat() ! Установить формат
!err# = xlsx.SetRange(3,4,5,6) ! И так тоже не работает
Но не работает.

Понятно, что не работает применение формата к диапазону ячеек. Но что конкретно ?