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

libxlsxwriter for Clarion

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

libxlsxwriter for Clarion

Добавлено: 17 Декабрь 2017, 10:15
RaFaeL
Если я правильно понял что написано в мануале, то это всего лишь пометка выделенных ячеек, а не групповое форматирование

libxlsxwriter for Clarion

Добавлено: 17 Декабрь 2017, 10:36
Игорь Столяров
Да, я это тоже видел ...
Тогда получается, что установленный формат действует только на методы WriteXXXXXXX ?

Судя по описанию, методы форматирования применяются к ячейкам, a worksheet_set_selection()
как раз эти ячейки и определяет ...

Ну не может быть такого, что нельзя для области ячеек установить шрифт, цвет и т.д. :(

libxlsxwriter for Clarion

Добавлено: 17 Декабрь 2017, 10:43
RaFaeL
Когда библиотеку встраивал в проект, переделывал выгрузку на форматирование вместе с записью вместо "сначала выгрузили, потом отформатировали". Кстати, шаблон от Taboga аналогично работает

https://libxlsxwriter.github.io/faq.html

Q. Can I apply a format to a range of cells in one go?

Currently no. However, it is a planned features to allow cell formats and data to be written separately.

libxlsxwriter for Clarion

Добавлено: 17 Декабрь 2017, 10:51
Игорь Столяров
RaFaeL писал(а): 17 Декабрь 2017, 10:43переделывал выгрузку на форматирование вместе с записью
Но это не всегда возможно ...
Например я хочу выгрузить по товарам несколько цен и потом закрасить минимум / максимум в каждой колонке.
Ну или тогда придётся сначала эту таблицу формировать в памяти, что бы на момент записи ячеек уже знать экстремумы
значений в каждой колонке по всей таблице ...
RaFaeL писал(а): 17 Декабрь 2017, 10:43 Currently no. However, it is a planned features to allow cell formats and data to be written separately.
Понял ! :(

libxlsxwriter for Clarion

Добавлено: 17 Декабрь 2017, 19:23
Игорь Столяров
Конечно идеология построения отчёта в LibXLSSWriter должна быть пересмотрена, относительно OLE ....
Но зато, кроме известных плюсов, обнаруживаются и неожиданные бонусы. :)
Например, нет зависимости разделителя дробных разрядов чисел от региональных настроек Windows.

Вопрос: можно ли посмотреть блок библиотеки для работы с форматами (файл tpicture.inc) ?
Заранее спасибо ! :)

libxlsxwriter for Clarion

Добавлено: 18 Декабрь 2017, 10:29
Игорь Столяров
Почему-то не могу подключить работу с форматированием ... :(
Вроде бы все Defines Project выставил правильно, но упорно не активируется компиляция именно в xlsxWriter.inc
Ничего не понимаю. Посмотрите пожалуйста в чём косяк, на штатном примере библиотеки.
(прикреплено к сообщению)

libxlsxwriter for Clarion

Добавлено: 18 Декабрь 2017, 16:50
RaFaeL
Попробуйте новый вариант, в заглавном посте обновил. Там немного неправильно было. В примере есть комментарий

libxlsxwriter for Clarion

Добавлено: 18 Декабрь 2017, 22:44
Игорь Столяров
RaFaeL писал(а): 18 Декабрь 2017, 16:50Попробуйте новый вариант,
Ура ! Таки заработало. Спасибо ! :)
Но видимо существуют некорые ньюансы, не срабатывает формат c бланкированием на числах.

Например:

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

            xlsx.ClearFormat()
            xlsx.Format.Picture='@n12.2b'
            xlsx.SetFormat()
            err#=xlsx.WriteNumber(1,5,0)
Упорно выводит "0.00". Так и должно быть ?

test.jpg

libxlsxwriter for Clarion

Добавлено: 18 Декабрь 2017, 23:11
RaFaeL
А в Экселе есть вообще формат с бланкированием?

libxlsxwriter for Clarion

Добавлено: 19 Декабрь 2017, 7:43
Игорь Столяров
RaFaeL писал(а): 18 Декабрь 2017, 23:11А в Экселе есть вообще формат с бланкированием?
Нет. Но вопрос можно задать по другому: как применить формат к ячейке без вывода данных.
Например, формируем бланк заказа, с пустой колонкой в которой будет указывается кол-во в формате "0.000"
Спасибо за направление, разобрался. ;) Нужно привыкать работать без диапазонов. Вот так правильно:

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

            xlsx.ClearFormat()
            xlsx.Format.Picture='@n_13.3'
            xlsx.SetFormat()
            err#=xlsx.WriteBlank(1,5)

libxlsxwriter for Clarion

Добавлено: 19 Декабрь 2017, 10:49
kreator
RaFaeL писал(а): 18 Декабрь 2017, 23:11 А в Экселе есть вообще формат с бланкированием?
Вообще есть. Вот так, например, - "0,00;;;@".

libxlsxwriter for Clarion

Добавлено: 23 Декабрь 2017, 22:30
Игорь Столяров
Возможно, это только для меня "открытие", но на всякий случай напишу ... ;)

Calc из пакета Libre Office полноценно работает с XLSX файлами: открывает, сохраняет и т.д.
(в отличии от Calc из пакета Apache OpenOffice, который XLSX только медленно читает с конвертацией).

И в принципе, это решает задачу полноценной работы с XLSX отчётами вообще без коммерческого Microsoft Excel. :)
Да и генерация отчётов в ODS специально для OO Calc похоже теперь тоже не нужна особо ...

libxlsxwriter for Clarion

Добавлено: 25 Декабрь 2017, 11:42
finsoftrz
На перспективу, наверно, стоит иметь ввиду xlsx. Я глянул, что создается внутри zip архива. В общем, все находится, можно и паровозиком прицепиться и портировать на чистый кларион. Архивировать можно и 7z. Тут есть забавная тонкость. Если разархивировать xlsx файл через 7z, то винда автоматически меняет кодировку файлов. То есть, если хотим завернуть обратно, надо поменять кодировку взад на utf8. Например, с помощью xml notepad. Им же можно пользоваться, чтобы автоматически привел к читабельному виду xml файлы, которые сжаты без разделителей строк.

libxlsxwriter for Clarion

Добавлено: 27 Декабрь 2017, 7:26
Игорь Столяров
Подскажите пожалуйста, а есть ли в LibXLSX возможность выполнить группировку строк ?
Т.е. то, что в OLE делается вот так:

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

     Object{MyXLS & 'Rows("1:50").Group'}     

libxlsxwriter for Clarion

Добавлено: 27 Декабрь 2017, 10:17
RaFaeL
Я так понимаю это уровень в https://libxlsxwriter.github.io/structl ... ml#details но currently not supported. Ждем-с.