Страница 53 из 61

libxlsxwriter for Clarion

Добавлено: 13 Август 2020, 16:34
vic7tar
RaFaeL, наверное забыли добавить format.set_diag_border /_type /_color?

libxlsxwriter for Clarion

Добавлено: 13 Август 2020, 17:11
RaFaeL
А это есть в оригинальной библиотеке?

libxlsxwriter for Clarion

Добавлено: 13 Август 2020, 19:12
vic7tar
Извиняюсь, почему-то забрёл на описание XlsxWriter.

libxlsxwriter for Clarion

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

libxlsxwriter for Clarion

Добавлено: 19 Август 2020, 16:09
vic7tar
Всё-таки функции format_set_diag_border|color|type уже имеются в вашей версии 1.3.3
Ещё обнаружил, что добавлена интересная функция - worksheet_write_rich_string().

libxlsxwriter for Clarion

Добавлено: 19 Август 2020, 22:07
RaFaeL
Про диагональные бордеры сейчас уточню, может просто забыли в документации

Про rich string спрашивал тут пару лет назад, никому не нужно было )

libxlsxwriter for Clarion

Добавлено: 19 Август 2020, 22:25
vic7tar
RaFaeL писал(а): 19 Август 2020, 22:07 Про диагональные бордеры сейчас уточню, может просто забыли в документации
Да, забыли.
RaFaeL писал(а): 19 Август 2020, 22:07 Про rich string спрашивал тут пару лет назад, никому не нужно было )
Ну не знаю, если будет свободное время, может добавить? Лично мне пригодилась бы.

libxlsxwriter for Clarion

Добавлено: 19 Август 2020, 22:47
RaFaeL
Добавил диагонали, пробуйте

libxlsxwriter for Clarion

Добавлено: 19 Август 2020, 23:35
vic7tar
Посмотрел, всё нормально, спасибо.

libxlsxwriter for Clarion

Добавлено: 25 Август 2020, 22:54
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')                     ! всё нормально

libxlsxwriter for Clarion

Добавлено: 26 Август 2020, 11:03
RaFaeL
Но если переделать на использование текущего формата, то пропадет стандартное оформление ссылок (подчеркивание, синий текст) и его придется каждый раз проставлять руками. Или какое должно быть поведение? Подразумевалось, что если вам надо с оформлением, то вы используете последовательно WriteUrl и WriteString, а упрощенный метод только для добавления ссылки со стандартным оформлением

libxlsxwriter for Clarion

Добавлено: 26 Август 2020, 13:46
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#

libxlsxwriter for Clarion

Добавлено: 26 Август 2020, 16:05
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')

libxlsxwriter for Clarion

Добавлено: 26 Август 2020, 16:50
vic7tar
Ну да, этот вариант и использовал.
Но встал вопрос, а почему-бы не использовать string_ и что-бы всё было красиво?

libxlsxwriter for Clarion

Добавлено: 26 Август 2020, 16:57
RaFaeL
Переделаю попозже. Дефолтный формат будет применяться, только если не установлен никакой