Страница 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
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
libxlsxwriter for Clarion
Добавлено: 11 Декабрь 2017, 22:15
gopstop2007
RaFaeL писал(а): 11 Декабрь 2017, 18:36
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
Спасибо огромное! Работает

libxlsxwriter for Clarion
Добавлено: 12 Декабрь 2017, 20:45
George
RaFaeL писал(а): 11 Декабрь 2017, 18:36
Пробуйте
Если еще чего не хватает, пишите, постараюсь добавить
А как открыть уже созданный файл (шаблон) и туда добавить данные ?
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 ???