libxlsxwriter for Clarion
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа. 
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
			
							Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое
- Вложения
 - 
			
		
		
				
- libxlsxwriter.zip
 - Версия 1.5 от 30.12.2021 на основе библиотеки 1.1.4
 - (276.26 КБ) 1933 скачивания
 
 
					Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
									
			
						libxlsxwriter for Clarion
RaFaeL, наверное забыли добавить format.set_diag_border /_type /_color?
			
			
									
						C10, Win10x64
			
						- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Всё-таки функции format_set_diag_border|color|type уже имеются в вашей версии 1.3.3
Ещё обнаружил, что добавлена интересная функция - worksheet_write_rich_string().
			
			
									
						Ещё обнаружил, что добавлена интересная функция - worksheet_write_rich_string().
C10, Win10x64
			
						- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Про диагональные бордеры сейчас уточню, может просто забыли в документации
Про rich string спрашивал тут пару лет назад, никому не нужно было )
			
			
									
						Про rich string спрашивал тут пару лет назад, никому не нужно было )
libxlsxwriter for Clarion
Да, забыли.RaFaeL писал(а): 19 Август 2020, 22:07 Про диагональные бордеры сейчас уточню, может просто забыли в документации
Ну не знаю, если будет свободное время, может добавить? Лично мне пригодилась бы.RaFaeL писал(а): 19 Август 2020, 22:07 Про rich string спрашивал тут пару лет назад, никому не нужно было )
C10, Win10x64
			
						libxlsxwriter for Clarion
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
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Но если переделать на использование текущего формата, то пропадет стандартное оформление ссылок (подчеркивание, синий текст) и его придется каждый раз проставлять руками. Или какое должно быть поведение? Подразумевалось, что если вам надо с оформлением, то вы используете последовательно WriteUrl и WriteString, а упрощенный метод только для добавления ссылки со стандартным оформлением
			
			
									
						libxlsxwriter for Clarion
Получается, что xlsxwriter.WriteUrl(row_, col_, url_, string_) даёт голую ячейку с гиперссылкой (да ещё с дефолтным выравниванием) без возможности использования всяких прибамбасов форматирования. 
В сишной структуре default_url_format все значимые поля нулевые, кроме:
font_size 11
underline 1
font_family 2
theme 10
hyperlink 1
locked 1
А если вот такой вариант? :
			
			
									
						В сишной структуре 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
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Да. Вам надо писать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
Ну да, этот вариант и использовал.
Но встал вопрос, а почему-бы не использовать string_ и что-бы всё было красиво?
			
			
									
						Но встал вопрос, а почему-бы не использовать string_ и что-бы всё было красиво?
C10, Win10x64
			
						- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
libxlsxwriter for Clarion
Переделаю попозже. Дефолтный формат будет применяться, только если не установлен никакой
			
			
									
						