Страница 3 из 62

libxlsxwriter for Clarion

Добавлено: 12 Февраль 2017, 14:06
RaFaeL
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое

libxlsxwriter for Clarion

Добавлено: 16 Февраль 2017, 23:33
kreator
Игорь Столяров писал(а):Результат: что-то происходит внутри DLL IqXML на парсинге больших файлов (есть такой бесплатный проект работы c XML файлами).Версия DLL от мая 2016 г. работает, а текущая версия от сентября 2016 г. - нет. Почему - ХЗ. Проект IqXML - умер. Пока для C10 старый DLL подходит - жить можно, дальше - плохо.Я вот теперь думаю, переписывать большой объем кода под очередной самопал и ждать пока он загнетсяс такими вот фирулями или все-таки потратится и написать разбор этих XML самому ?
У Вас с RaFaeL'ем разный подход. RaFaeL версию не меняет (может ещё и по этой причине). Я тоже стараюсь раз в 3-4 месяца обновиться. И, конечно, вылезают проблемы. Поэтому, задача - минимизировать проблемы. Много сторонних dll -> много времени на отладку -> много ресурсов (людей). Как я писал, лучше зависеть от одной конторы. Или хотя бы от себя.
И ещё мне очень не нравятся бесплатные проекты. Во-первых они не вечные. Во-вторых, у разработчиков бывает очень интересный подход. Я столкнулся. Попросили посмотреть открытую графическую библиотеку (на с++, может практически всё, вплоть до распознавания движущихся объектов на видео). Хелп не актуальный, примеров практически нет. Видимо, считают, что пользователи раз не платят, то хотя бы пусть найдут время изучить как всё это работает.
А кларионовский класс для xml совсем никакой?

libxlsxwriter for Clarion

Добавлено: 16 Февраль 2017, 23:39
Игорь Столяров
kreator писал(а): А кларионовский класс для xml совсем никакой?
В С10 - нормальный. С ним можно работать, просто не совсем удобно ... к тому же только в UTF-8.
kreator писал(а): хотя бы пусть найдут время изучить как всё это работает
Иногда бывает по другому. Если делали библиотеку под какой-либо тендер на гос / бюджетный заказ, то там часто прописывают публикацию используемого кода. Вроде как защита бюджетных денег. В принципе риска никакого - все равно фиг кто разберется ... :)

libxlsxwriter for Clarion

Добавлено: 17 Февраль 2017, 0:40
RaFaeL
Еще раз - сабжевая библиотека от версии Клариона не зависит! Именно этим она и ценна!
Собрал либу 0.6.9 через MinGW старый, без лишних зависимостей, завтра проверю и выложу комплект, далее только кларионовский код меняться будет

libxlsxwriter for Clarion

Добавлено: 17 Февраль 2017, 11:04
RaFaeL
Обновил стартовый пост
Библиотека версии 0.6.9
Добавил метод фиксации строк и колонок

libxlsxwriter for Clarion

Добавлено: 07 Декабрь 2017, 21:51
gopstop2007
Попробовал, хороша, шустро, спасибо. Хотелось бы, чтобы полностью заменить чем сейчас пользуюсь, необходима вставка картинок(image) в excel.
Добавил в .clw

Код: Выделить всё

worksheet_insert_image(LONG worksheet,LONG row,LONG col,*CSTRING string),LONG,RAW,C,NAME('worksheet_insert_image') 

xlsxwriter.InsertImageOpt  PROCEDURE(LONG row_,LONG col_,STRING string_) 
cstr     &CSTRING

  CODE
    cstr &=new(cstring(len(clip(string_))*2+1))
    cstr = clip(string_)
    ConvertCharSet(cstr,0,65001)
    ret#=worksheet_insert_image(SELF.ActiveWorksheet,row_-1,col_-1,cstr)
    dispose(cstr); 
    return ret#
Вставляет картинку, но одна проблема, без форматирования, не вписывает картинку в клетку
Добавляю еще процедуру

Код: Выделить всё

worksheet_insert_image_opt(LONG worksheet,LONG row,LONG col,*CSTRING string,*CSTRING options),LONG,RAW,C,NAME('worksheet_insert_image_opt')
Но, не получается передать последний параметр - options
https://github.com/jmcnamara/libxlsxwriter/issues/85
Помогите добрым словом :)

libxlsxwriter for Clarion

Добавлено: 11 Декабрь 2017, 18:36
RaFaeL
gopstop2007 писал(а): 07 Декабрь 2017, 21:51
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить

libxlsxwriter for Clarion

Добавлено: 11 Декабрь 2017, 22:15
gopstop2007
RaFaeL писал(а): 11 Декабрь 2017, 18:36 Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
Спасибо огромное! Работает :D

libxlsxwriter for Clarion

Добавлено: 12 Декабрь 2017, 20:45
George
RaFaeL писал(а): 11 Декабрь 2017, 18:36
gopstop2007 писал(а): 07 Декабрь 2017, 21:51
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
А как открыть уже созданный файл (шаблон) и туда добавить данные ?

libxlsxwriter for Clarion

Добавлено: 12 Декабрь 2017, 20:53
Игорь Столяров
George писал(а): 12 Декабрь 2017, 20:45А как открыть уже созданный файл (шаблон) и туда добавить данные ?
Низя. :( см. https://libxlsxwriter.github.io/introduction.html

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 3:05
Igor Vesnin
Можно написать парсер, который из бланка (шаблона) подготовит скрипт (файл с описание форматов ячеек и т.д.). А по скрипту создавать файл с помощью, например, этой библиотеки.

Для xlsx можно и не писать парсер. Просто распаковать файл и открывать соответствующие XML файлы и по ним создавать файл.

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 8:25
finsoftrz
Я так и делаю. Только для вывода использую DExcel. В принципе, на месте DExcel можно и другие библиотеки подцепить.
На первом скрине бланк в Excel.
На втором сгенеренной программой шаблон (скрипт). Заголовок до ******* вписывается вручную, остальное создается автоматически.
На третьем результат в Excel.
На четвертом результат в Report.

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 8:26
finsoftrz
Продолжение...

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 9:56
finsoftrz
Еще код в приложении, остальное шаблоном.

Код: Выделить всё

form_r routine  !формирование отчета

     do startPrn_r  !начать печать

     FsPrimary:Param(1)
     FsRep.PrgViewRTF=PAR:PrgBlancsEdit
     do bind_r

     loc:nameDet='Шапка' ; do print_r

     clear(SotGr:record,-1)
     set(SotGr:keyName,SotGr:keyName)
     loop
         next(sotrGr)
         if error()
            break
         .
         if Loc:Gr>0 and Loc:Gr<>SotGr:ID
            cycle
         .

         loc:nameDet='Группа' ; do print_r

         clear(sot:record,-1)
         sot:IDGr=sotGr:ID
         if Loc:Sort=1
            set(Sot:keyKodGr,Sot:keyKodGr)
         else
            set(Sot:keyNameGr,Sot:keyNameGr)
         .

         loop
              next(sotr)
              if error() or sot:IDGr<>sotGr:ID
                 break
              .
              loc:nameDet='Строка' ; do print_r
           .
        .

     loc:nameDet='Подвал' ; do print_r

     do endPrn_r  !завершить печать
     do unbind_r

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 10:13
RaFaeL
Заведите, пожалуйста, для своих шаблонов отдельную тему. Эта про конкретную библиотеку

libxlsxwriter for Clarion

Добавлено: 13 Декабрь 2017, 10:20
George
finsoftrz писал(а): 13 Декабрь 2017, 8:25 Я так и делаю. Только для вывода использую DExcel. В принципе, на месте DExcel можно и другие библиотеки подцепить.
На первом скрине бланк в Excel.
На втором сгенеренной программой шаблон (скрипт). Заголовок до ******* вписывается вручную, остальное создается автоматически.
На третьем результат в Excel.
На четвертом результат в Report.
А умеет DExcel работать с XLSX ???