Страница 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
gopstop2007 писал(а): 13 Декабрь 2017, 11:28
Выдает ошибку 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
gopstop2007 писал(а): 13 Декабрь 2017, 11:28
Вероятно, внутреннее ограничение
Покопал исходники, похоже что дело в количестве одновременно открытых файлов. Файл открывается сразу и не закрывается до создания файла. Автору написал.
Так и есть, так как я из блоба - BLOBTOFILE(pictures,'tmp.jpg') создаю tmp-фото, закидываю в xlsx, и сразу удалял tmp-фото, и так по циклу. В libxlsxwriter удалять tmp-фото не давало. :(

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 13:51
RaFaeL
gopstop2007 писал(а): 13 Декабрь 2017, 12:50
Пересобрал на текущей версии 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)      ! И так тоже не работает
            
Но не работает. :(
Понятно, что не работает применение формата к диапазону ячеек. Но что конкретно ?