libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Вот так всегда. На самом интересном месте ...
Спасибо, понял, ждём-с !
Спасибо, понял, ждём-с !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Что-то я опять запутался ...
Хочу сделать незамысловатое действие: обвести несколько ячеек общей рамкой и вывести текст.
Пробуем на штатном примере:
Результат не соответствует ожиданиям Я что-то опять не то делаю ? Спасайте пожалуйста ...
Хочу сделать незамысловатое действие: обвести несколько ячеек общей рамкой и вывести текст.
Пробуем на штатном примере:
Код: Выделить всё
xlsx.ClearFormat()
err#=xlsx.WriteBoolean(5,1,1)
! 1 ВАРИАНТ - ПО ОПИСАНИЮ НА САЙТЕ XLSXWRITER
xlsx.Format.BorderStyle = XLSX:BorderLeft + XLSX:BorderTop + XLSX:BorderRight + XLSX:BorderBottom
xlsx.SetFormat()
err#=xlsx.Merge(3,3,5,5)
xlsx.SetSelection(3,3,3,3)
xlsx.Format.FontSize=18
xlsx.Format.FontColor=color:red
xlsx.Format.FontStyle=FONT:Bold
xlsx.Format.Align=XLSX:ALIGN_CENTER
xlsx.Format.AlignV=XLSX:ALIGN_VERTICAL_CENTER
! 2 ВАРИАНТ
!xlsx.Format.BorderStyle = XLSX:BorderLeft + XLSX:BorderTop + XLSX:BorderRight + XLSX:BorderBottom
xlsx.SetFormat()
err#=xlsx.WriteString(3,3,'Привет!')
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Надо в цикле к каждой ячейке из диапазона формат применить через WriteBlank
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Спасибо. Это решает вопрос, хотя и не очень удобно ...
Сбивает с толку, то, что в примере описания worksheet_merge_range()
к диапазону ячеек применяется центровка, цвет фона и рамка.
У нас центровка и цвет фона отрабатывается для диапазона, а рамка - нет.
Сбивает с толку, то, что в примере описания worksheet_merge_range()
к диапазону ячеек применяется центровка, цвет фона и рамка.
У нас центровка и цвет фона отрабатывается для диапазона, а рамка - нет.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
libxlsxwriter for Clarion
В классике жанра создаются шрифты, затем стили. Потом уже выводятся значения в ячейки с заданным стилем. В рассматриваемой библиотеке как-то нестандартно построено.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Поправил, будет как в примере - объединение ячеек применяет к ним ранее заданный формат.Игорь Столяров писал(а): ↑28 Декабрь 2017, 10:03Сбивает с толку, то, что в примере описания worksheet_merge_range()
к диапазону ячеек применяется центровка, цвет фона и рамка.
Код: Выделить всё
xlsxwriter.Merge PROCEDURE(LONG first_row_,LONG first_col_,LONG last_row_,LONG last_col_)
CODE
return worksheet_merge_range(SELF.ActiveWorksheet,first_row_-1,first_col_-1,last_row_-1,last_col_-1,,SELF.ActiveFormat)
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Я конечно прошу пардона, но в XLSXWriter - именно так и сделано ...
Задаётся шрифт, стиль, он применяется и далее идёт вывод заданными настройками ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Спасибо ! Таки теперь, тот же пример, работает совершенно кошерно ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
libxlsxwriter for Clarion
В сформированных xml файлах да. А в библиотеке нет. Например, запись строки может выглядеть так: xlsx.WriteString(row,col,string,style).Игорь Столяров писал(а): ↑28 Декабрь 2017, 10:24Я конечно прошу пардона, но в -скриптовый XLSXWriter - именно так и сделано ...
Задаётся шрифт, стиль, он применяется и далее идёт вывод заданными настройками ...
Я не хочу сказать, что это хуже или лучше. В доке написано, что библиотека является портом аналогичной библиотеки в питоне. Питон скриптовый язык, видимо, там делалось как удобнее писать код вручную. Отсюда и некий разворот. По моему опыту работы с прямым выводом в экселевский файл, вручную ничего не пишется. Или все берется из list контрола на экране, либо из шаблона в excel. То есть шрифты и стили определяются автоматически. В этом случае удобно вначале их все сформировать, а потом применять. А если, к примеру, посмотреть работу через ole, то там тоже ориентировано на ручное кодирование.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
libxlsxwriter for Clarion
То есть в классике выглядит так:
xlsx.addFont(font1, параметры)
xlsx.addFont(font2, параметры)
xlsx.addStyle(style1, font1, параметры)
...
xlsx.WriteString(row,col,string1,style1)
xlsx.WriteNumeric(row,col,num1,style2)
....
xlsx.addFont(font1, параметры)
xlsx.addFont(font2, параметры)
xlsx.addStyle(style1, font1, параметры)
...
xlsx.WriteString(row,col,string1,style1)
xlsx.WriteNumeric(row,col,num1,style2)
....
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
К примеру, в нашем проекте экспорт идет через печатную форму. Там куча вариантов, куда выгрузить, в т.ч. Excel. Соответственное, все шрифты и стиле задаются в редакторе, а там как раз все вместе хранится - контрол, а у него и свойства (шрифты, стили и т.п.) и содержимое, скажем так, в одной плоскости, поэтому никаких проблем с экспортом
Так тоже можно, только очередь стилей нужно вести самому и менять руками свойство класса ActiveFormat. Т.е. делаешь SetFormat(), сохраняешь куда-то значение ActiveFormat, делаешь следующий стиль, затем когда надо меняешь переменнуюТо есть в классике выглядит так:
xlsx.addFont(font1, параметры)
xlsx.addFont(font2, параметры)
xlsx.addStyle(style1, font1, параметры)
...
xlsx.WriteString(row,col,string1,style1)
xlsx.WriteNumeric(row,col,num1,style2)
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
libxlsxwriter for Clarion
По такому принципу организуются данные в экселевских файлах. Возможно, это не очень удобно для ручного кодирования следовать такой же последовательности действий. Тут важно определить, что хотим. Если хотим полностью автоматизированного процесса, то удобнее следовать схеме, как в файлах, если хотим писать код вручную, то есть смысл отойти. Я предпочитаю первый вариант, хотя он требует большей подготовительной работы.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Вот это - точно не для моего интеллекта.
Это значит, где-то там, в прекрасном далёко, изменился формат стиля и поехало везде, где этот стиль используется ?
Спасибо - не надо.
У нас всё просто и понятно, как в армии: определил, вывел, забыл. Определил, вывел, забыл. и т.д.
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Нет, ранее заданный формат как набор параметров изменить нельзя. Но можно сначала задать форматы, потом выводить данные. Что-то типа
Код: Выделить всё
LOC:Format LONG,DIM(100500)
xlsx.Format.BorderStyle=XLSX:BorderLeft+XLSX:BorderTop+XLSX:BorderRight+XLSX:BorderBottom
xlsx.SetFormat()
LOC:Format[1]=xlsx.ActiveFormat
xlsx.Format.FontSize=18
xlsx.Format.FontColor=color:red
xlsx.Format.FontStyle=FONT:Bold
xlsx.Format.Align=XLSX:ALIGN_CENTER
xlsx.Format.AlignV=XLSX:ALIGN_VERTICAL_CENTER
xlsx.SetFormat()
LOC:Format[2]=xlsx.ActiveFormat
xlsx.ActiveFormat=LOC:Format[1]
err#=xlsx.Merge(3,3,5,5)
xlsx.ActiveFormat=LOC:Format[2]
err#=xlsx.WriteString(3,3,'Привет!')
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
libxlsxwriter for Clarion
Игорь, это стереотип в голове. Там, где используется понятие стиля, так и делается. Определяем стили для таблиц, форм ввода и т.п. Затем меняем параметры у стиля, меняется везде. В этом и смысл стилизации. Например, в том же вебе...
C6/C11, ШВС, tps/btrieve.