libxlsxwriter for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

finsoftrz писал(а): 09 Январь 2018, 16:03Ок, не буду больше мешать...
Огромное спасибо ! Вы не мешаете, просто в магазине - продуктовое, в аптеке - лекарства и т.д.
А у нас сельпо какое-то получается. Тем более, что Вы отвечаете на мой вопрос по libxlsxwriter со
ссылкой на свою библиотеку, которую никто кроме Вас не видел. Какая польза от этого ?

Заведите тему, выложите библиотеку, её можно будет поюзать, обсудить и понять описываемые Вами структуры.
Если Вы конечно сами этого хотите. Это - нормально ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Вы не так поняли. Эта структура соответствует представлению в xlsx формате. Я просто скопировал ее из своего класса, чтобы было понятнее. В libxlsxWriter некоторые вещи трактуются достаточно своеобразно. Ладно, все, перехожу в readonly... :-)
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

finsoftrz писал(а): 09 Январь 2018, 16:22Ладно, все, перехожу в readonly...
И напрасно ! Ваши замечания и рекомендации (когда они в тему обсуждаемого вопроса) - очень полезны. :)
За теми кто отстал - не возвращаться. (С) Кодекс
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

libxlsxwriter for Clarion

Сообщение zmi »

Попробовал библиотечку.
В целом довольно неплохо, но есть два момента. Во-первых: если я правильно понял, текст из примера
xlsx.Format.Picture='@n-14.0'
xlsx.SetFormat()
err#=xlsx.WriteNumber(2,3,123.0)
должен был отформатировать ячейку, как числовую - у меня не форматирует, формат ячейки "Общий" :( В принципе, нужен вывод числа с двумя знаками после запятой.
Во-вторых, хотел линиями обрамить сразу всю выводимую табличку (да и числовой формат некоторым столбцам установить), но setselection не помог (а вот setcolumn отрешетил столбцы). Пришлось в цикле форматировать при выводе очереди.
Да, и без Autofit'а, конечно печалька.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Установка форматов работает, если установлен шаблон Taboga Native Excel, используется TPictureClass оттуда, который конвертирует кларионовский шаблон в экселевский. Поскольку эта штука номинально платная и на нее у кого-то есть авторские права, в комплекте с оберткой для libxlsxwriter не поставляется
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

libxlsxwriter for Clarion

Сообщение zmi »

Судя по тексту при отсутствии Taboga Native Excel, если я укажу в xlsx.Format.Picture='@n-14.0' прямо эксельный формат, то должно сработать. Никто не подскажет, чего туда засунуть для отображения знака числа и двух цифирек после запятой? :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

Можно ли предложить для рассмотрения простой вариант решения вопроса с прорисовкой линий сетки ?

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

! --- 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
test.jpg (8.39 КБ) 2474 просмотра
Заранее спасибо за рассмотрение ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

zmi писал(а): 10 Январь 2018, 9:39Судя по тексту при отсутствии Taboga Native Excel, если я укажу в xlsx.Format.Picture='@n-14.0' прямо эксельный формат, то должно сработать. Никто не подскажет, чего туда засунуть для отображения знака числа и двух цифирек после запятой?
Сейчас не сработает, но я уже немного переделал этот кусок, можно будет напрямую указывать экселевский формат
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Игорь Столяров писал(а): 10 Январь 2018, 10:13Можно ли предложить для рассмотрения простой вариант решения вопроса с прорисовкой линий сетки ?
Понял что нужно, пока не определился, как лучше сделать. Там еще и с цветами линий то же самое
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

RaFaeL писал(а): 10 Январь 2018, 12:17Там еще и с цветами линий то же самое
Ну да. Я просто как чукча: что вижу - то и пою. :)
Пробую рисовать обычные обычные отчёты - а они печатаются на чёрно-белом принтере, поэтому раскраску не использую.
А вот выделение видом сетки - полезная опция (на мой субъективный взгляд). Спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

ОК, для полной функциональности библиотеки придется отказаться от стилей, будут просто значения, что заполните, то и применится. Сначала применяются общие параметры ячейки, можно отдельные переопределить
Последний раз редактировалось RaFaeL 13 Январь 2018, 14:45, всего редактировалось 1 раз.
zmi
Новичок
Сообщения: 20
Зарегистрирован: 26 Октябрь 2017, 21:51

libxlsxwriter for Clarion

Сообщение zmi »

Спасибо. С форматирование прелестненько получилось.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

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 игнорируется. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Артур
Ветеран
Сообщения: 329
Зарегистрирован: 01 Июнь 2006, 12:33
Откуда: Новороссийск

libxlsxwriter for Clarion

Сообщение Артур »

RaFaeL писал(а): 10 Январь 2018, 18:26Сначала применяются общие параметры ячейки, можно отдельные переопределить
Прошу завершить упражнения с форматированием, надо выдавать продукцию
Любить и обещать ничего не стоит
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

Сообщение Игорь Столяров »

В интересах революции жертвы всегда оправданы ! :)
Я тоже с десяток отчётов с утра подправил под обновление и не жужу ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить