Страница 14 из 61
libxlsxwriter for Clarion
Добавлено: 09 Январь 2018, 16:08
Игорь Столяров
finsoftrz писал(а): ↑09 Январь 2018, 16:03Ок, не буду больше мешать...
Огромное спасибо ! Вы не мешаете, просто в магазине - продуктовое, в аптеке - лекарства и т.д.
А у нас сельпо какое-то получается. Тем более, что Вы отвечаете на мой вопрос по libxlsxwriter со
ссылкой на свою библиотеку, которую никто кроме Вас не видел. Какая польза от этого ?
Заведите тему, выложите библиотеку, её можно будет поюзать, обсудить и понять описываемые Вами структуры.
Если Вы конечно сами этого хотите. Это - нормально ...
libxlsxwriter for Clarion
Добавлено: 09 Январь 2018, 16:22
finsoftrz
Вы не так поняли. Эта структура соответствует представлению в xlsx формате. Я просто скопировал ее из своего класса, чтобы было понятнее. В libxlsxWriter некоторые вещи трактуются достаточно своеобразно. Ладно, все, перехожу в readonly...
libxlsxwriter for Clarion
Добавлено: 09 Январь 2018, 16:25
Игорь Столяров
finsoftrz писал(а): ↑09 Январь 2018, 16:22Ладно, все, перехожу в readonly...
И напрасно ! Ваши замечания и рекомендации (когда они в тему обсуждаемого вопроса) - очень полезны.
libxlsxwriter for Clarion
Добавлено: 09 Январь 2018, 16:54
zmi
Попробовал библиотечку.
В целом довольно неплохо, но есть два момента. Во-первых: если я правильно понял, текст из примера
xlsx.Format.Picture='@n-14.0'
xlsx.SetFormat()
err#=xlsx.WriteNumber(2,3,123.0)
должен был отформатировать ячейку, как числовую - у меня не форматирует, формат ячейки "Общий"
В принципе, нужен вывод числа с двумя знаками после запятой.
Во-вторых, хотел линиями обрамить сразу всю выводимую табличку (да и числовой формат некоторым столбцам установить), но setselection не помог (а вот setcolumn отрешетил столбцы). Пришлось в цикле форматировать при выводе очереди.
Да, и без Autofit'а, конечно печалька.
libxlsxwriter for Clarion
Добавлено: 09 Январь 2018, 17:11
RaFaeL
Установка форматов работает, если установлен шаблон Taboga Native Excel, используется TPictureClass оттуда, который конвертирует кларионовский шаблон в экселевский. Поскольку эта штука номинально платная и на нее у кого-то есть авторские права, в комплекте с оберткой для libxlsxwriter не поставляется
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 9:39
zmi
Судя по тексту при отсутствии Taboga Native Excel, если я укажу в xlsx.Format.Picture='@n-14.0' прямо эксельный формат, то должно сработать. Никто не подскажет, чего туда засунуть для отображения знака числа и двух цифирек после запятой?
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 10:13
Игорь Столяров
Можно ли предложить для рассмотрения простой вариант решения вопроса с прорисовкой линий сетки ?
Код: Выделить всё
! --- XLSXWriter.inc (добавляем)
FormatType GROUP,TYPE
....
BorderLeftFormat BYTE(255) ! + добавить инициализацию в ClearFormat()
BorderRightFormat BYTE(255)
BorderTopFormat BYTE(255)
BorderBottomFormat BYTE(255)
...
! --- XLSXWriter.clw (заменяем)
xlsxwriter.SetFormat PROCEDURE
CODE
....
if SELF.Format.BorderStyle=15 and |
SELF.Format.BorderLeftFormat = 255 and |
SELF.Format.BorderRightFormat = 255 and |
SELF.Format.BorderTopFormat = 255 and |
SELF.Format.BorderBottomFormat = 255
format_set_border(SELF.FormatQ.Ref,SELF.Format.BorderFormat)
elsif SELF.Format.BorderStyle
if BAND(SELF.Format.BorderStyle,XLSX:BorderLeft)>0
format_set_left(SELF.FormatQ.Ref,Choose(SELF.Format.BorderLeftFormat = 255,Self.Format.BorderFormat,SELF.Format.BorderLeftFormat))
end
if BAND(SELF.Format.BorderStyle,XLSX:BorderRight)>0
format_set_right(SELF.FormatQ.Ref,Choose(SELF.Format.BorderRightFormat = 255,Self.Format.BorderFormat,SELF.Format.BorderRightFormat))
end
if BAND(SELF.Format.BorderStyle,XLSX:BorderTop)>0
format_set_top(SELF.FormatQ.Ref,Choose(SELF.Format.BorderTopFormat = 255,Self.Format.BorderFormat,SELF.Format.BorderTopFormat))
end
if BAND(SELF.Format.BorderStyle,XLSX:BorderBottom)>0
format_set_bottom(SELF.FormatQ.Ref,Choose(SELF.Format.BorderBottomFormat = 255,Self.Format.BorderFormat,SELF.Format.BorderBottomFormat))
end
end
...
Работы на 2 минуты, полная совместимость с предыдущим кодом. Теперь:
Код: Выделить всё
xlsx.ClearFormat()
xlsx.Format.BorderLeftFormat = XLSX:BORDER_NONE
xlsx.Format.BorderRightFormat = XLSX:BORDER_DOTTED
xlsx.Format.BorderTopFormat = XLSX:BORDER_THICK
xlsx.Format.BorderBottomFormat = XLSX:BORDER_DOUBLE
xlsx.Format.BorderStyle=XLSX:BorderLeft+XLSX:BorderTop+XLSX:BorderRight+XLSX:BorderBottom
xlsx.SetFormat()
err#=xlsx.WriteBlank(10,10)
рисует комбинированную рамку на любой вкус:
- test.jpg (8.39 КБ) 2481 просмотр
Заранее спасибо за рассмотрение !
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 10:51
RaFaeL
zmi писал(а): ↑10 Январь 2018, 9:39Судя по тексту при отсутствии Taboga Native Excel, если я укажу в xlsx.Format.Picture='@n-14.0' прямо эксельный формат, то должно сработать. Никто не подскажет, чего туда засунуть для отображения знака числа и двух цифирек после запятой?
Сейчас не сработает, но я уже немного переделал этот кусок, можно будет напрямую указывать экселевский формат
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 12:17
RaFaeL
Игорь Столяров писал(а): ↑10 Январь 2018, 10:13Можно ли предложить для рассмотрения простой вариант решения вопроса с прорисовкой линий сетки ?
Понял что нужно, пока не определился, как лучше сделать. Там еще и с цветами линий то же самое
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 12:31
Игорь Столяров
RaFaeL писал(а): ↑10 Январь 2018, 12:17Там еще и с цветами линий то же самое
Ну да. Я просто как чукча: что вижу - то и пою.
Пробую рисовать обычные обычные отчёты - а они печатаются на чёрно-белом принтере, поэтому раскраску не использую.
А вот выделение видом сетки - полезная опция (на мой субъективный взгляд). Спасибо !
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 18:26
RaFaeL
ОК, для полной функциональности библиотеки придется отказаться от стилей, будут просто значения, что заполните, то и применится. Сначала применяются общие параметры ячейки, можно отдельные переопределить
libxlsxwriter for Clarion
Добавлено: 10 Январь 2018, 20:45
zmi
Спасибо. С форматирование прелестненько получилось.
libxlsxwriter for Clarion
Добавлено: 11 Январь 2018, 8:48
Игорь Столяров
RaFaeL писал(а): ↑10 Январь 2018, 18:26Сначала применяются общие параметры ячейки, можно отдельные переопределить
Спасибо ! Рисование рамок теперь получилось намного понятней, но если позволите небольшую критику, то
хотел заметить, что всё-таки хорошо бы разделить понятия "без рамки" и "не рисовать рамку". Поясню на примере.
Хочу нарисовать толстую рамку и низ отделить двойной линией. Без проблем !
Код: Выделить всё
xlsx.ClearFormat()
xlsx.Format.Border.Format=XLSX:Border_Thick
xlsx.Format.Bottom.Format=XLSX:Border_DOUBLE
xlsx.SetFormat()
err#=xlsx.Merge(3,3,5,5)
Теперь хочу нарисовать толстую рамку без нижней границы. Казалось бы тоже самое:
Код: Выделить всё
xlsx.ClearFormat()
xlsx.Format.Border.Format=XLSX:Border_Thick
xlsx.Format.Bottom.Format=XLSX:Border_NONE
xlsx.SetFormat()
err#=xlsx.Merge(3,3,5,5)
Но так как XLSX:Border_NONE = 0, то действие xlsx.Format.Bottom.Format=XLSX:Border_NONE игнорируется.
libxlsxwriter for Clarion
Добавлено: 11 Январь 2018, 9:34
Артур
RaFaeL писал(а): ↑10 Январь 2018, 18:26Сначала применяются общие параметры ячейки, можно отдельные переопределить
Прошу завершить упражнения с форматированием, надо выдавать продукцию
libxlsxwriter for Clarion
Добавлено: 11 Январь 2018, 10:17
Игорь Столяров
В интересах революции жертвы всегда оправданы !
Я тоже с десяток отчётов с утра подправил под обновление и не жужу ...