libxlsxwriter for Clarion

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

RaFaeL, наверное забыли добавить format.set_diag_border /_type /_color?
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

А это есть в оригинальной библиотеке?
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Извиняюсь, почему-то забрёл на описание XlsxWriter.
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

vic7tar писал(а): 13 Август 2020, 19:12 Извиняюсь, почему-то забрёл на описание XlsxWriter.
Создайте issue для libxlsxwriter возможно добавят и туда
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Всё-таки функции format_set_diag_border|color|type уже имеются в вашей версии 1.3.3
Ещё обнаружил, что добавлена интересная функция - worksheet_write_rich_string().
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Про диагональные бордеры сейчас уточню, может просто забыли в документации

Про rich string спрашивал тут пару лет назад, никому не нужно было )
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

RaFaeL писал(а): 19 Август 2020, 22:07 Про диагональные бордеры сейчас уточню, может просто забыли в документации
Да, забыли.
RaFaeL писал(а): 19 Август 2020, 22:07 Про rich string спрашивал тут пару лет назад, никому не нужно было )
Ну не знаю, если будет свободное время, может добавить? Лично мне пригодилась бы.
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Добавил диагонали, пробуйте
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Посмотрел, всё нормально, спасибо.
C10, Win10x64
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

RaFaeL, похоже в xlsxwriter.WriteUrl() закралась небольшая неточность, связанная с с использованием workbook_get_default_url_format():

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

   xlsx.ClearFormat()
   xlsx.Format.Border.Format = XLSX:Border_Thick
   xlsx.Format.Align = XLSX:ALIGN_CENTER 
   xlsx.Format.AlignV = XLSX:ALIGN_VERTICAL_CENTER
   xlsx.SetFormat()
   xlsx.Merge(3, 3, 5, 5)
   xlsx.WriteUrl(3, 3, 'http://www.clarionlife.net', 'Clarionlife')        ! 'Clarionlife' не центрируется
   ! xlsx.WriteUrl(3, 3, 'http://www.clarionlife.net')                     ! всё нормально
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Но если переделать на использование текущего формата, то пропадет стандартное оформление ссылок (подчеркивание, синий текст) и его придется каждый раз проставлять руками. Или какое должно быть поведение? Подразумевалось, что если вам надо с оформлением, то вы используете последовательно WriteUrl и WriteString, а упрощенный метод только для добавления ссылки со стандартным оформлением
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Получается, что xlsxwriter.WriteUrl(row_, col_, url_, string_) даёт голую ячейку с гиперссылкой (да ещё с дефолтным выравниванием) без возможности использования всяких прибамбасов форматирования.
В сишной структуре default_url_format все значимые поля нулевые, кроме:
font_size 11
underline 1
font_family 2
theme 10
hyperlink 1
locked 1
А если вот такой вариант? :

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

xlsxwriter.WriteUrl     PROCEDURE(LONG row_,SHORT col_,STRING url_,<STRING string_>)
  CODE
    SELF.ToUTF8(url_)
    ret# = worksheet_write_url(SELF.ActiveSheet,row_-1,col_-1,SELF.cstr,SELF.ActiveFormat)
    if ~omitted(5)
      activeformat#=SELF.ActiveFormat
      self.Format.FontName  = 'Calibri'
      self.Format.FontSize  = 11
      self.Format.FontColor = COLOR:Blue
      self.Format.FontStyle = FONT:Underline
      self.SetFormat()      
      !SELF.ActiveFormat=workbook_get_default_url_format(SELF.Workbook)
      ret#=SELF.WriteString(row_,col_,string_)
      SELF.ActiveFormat=activeformat#
    end
    return ret#
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

vic7tar писал(а): 26 Август 2020, 13:46 Получается, что xlsxwriter.WriteUrl(row_, col_, url_, string_) даёт голую ячейку с гиперссылкой (да ещё с дефолтным выравниванием) без возможности использования всяких прибамбасов форматирования.
Да. Вам надо писать

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

 xlsx.ClearFormat()
   xlsx.Format.Border.Format = XLSX:Border_Thick
   xlsx.Format.Align = XLSX:ALIGN_CENTER 
   xlsx.Format.AlignV = XLSX:ALIGN_VERTICAL_CENTER
   xlsx.SetFormat()
   xlsx.Merge(3, 3, 5, 5)
   xlsx.WriteUrl(3, 3, 'http://www.clarionlife.net')
   xlsx.WriteString(3, 3, 'Clarionlife')
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Ну да, этот вариант и использовал.
Но встал вопрос, а почему-бы не использовать string_ и что-бы всё было красиво?
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Переделаю попозже. Дефолтный формат будет применяться, только если не установлен никакой
Ответить