libxlsxwriter for Clarion

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

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

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

libxlsxwriter for Clarion

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

Артур писал(а): 03 Январь 2018, 21:51Не могу нарисовать бордюры на объединении ячеек, подскажи пожалуйста как это делается?
см. сообщения от 28.12.2017 г. или просто добавьте параметр c форматом в метод:

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

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

libxlsxwriter for Clarion

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

Ещё необъяснимый фортель библиотеки ... Если выполнить код:

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

     err# = xlsx.WriteString(10,1,'N')
     err# = xlsx.WriteString(11,1,'!')
     err# = xlsx.WriteString(12,1,'@')
     err# = xlsx.WriteString(13,1,'№')
     err# = xlsx.WriteString(14,1,'$')
     err# = xlsx.WriteString(15,1,'%')
     err# = xlsx.WriteString(16,1,'&')
то строка 13 будет пустая. :( Подозреваю, что проблема где-то с конвертации в UTF, потому что
при вводе напрямую в Microsoft Excel или при экспорте через OLE символ '№' нормально записывается в ячейку.
Не смертельно ... но непонятно ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

finsoftrz писал(а): 02 Январь 2018, 10:45Кстати, Libre Office Calc работает шустрее, чем Open Office Calc.
Да, но есть проблемы-с ... ;)
При открытии в Libre Calc XLSX файла созданного через XLSXWriter не отрабатывается перенос текста (WrapText). :(
- Если открывать XLSX файл в Apache Calc с конвертацией - проблемы нет;
- Если перезаписать созданный в XLSXWriter XLSX файл через Microsoft Excel - проблемы нет и в Libre Calc;
- Если создать XLSX файл, например через библиотеку EasyOpenOffice напрямую в Libre Calc - проблемы нет.

А в XLSX файлах созданных через Ваш класс отрабатывается перенос строк (WrapText) при открытии в Libre Calc ?
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Посмотрел, тоже не срабатывает. Сейчас пока занят, чуть позже уточню. Что-то в стиле надо подкорректировать.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Игорь Столяров писал(а): 04 Январь 2018, 0:45Ещё необъяснимый фортель библиотеки ... Если выполнить код:

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

     err# = xlsx.WriteString(10,1,'N')
     err# = xlsx.WriteString(11,1,'!')
     err# = xlsx.WriteString(12,1,'@')
     err# = xlsx.WriteString(13,1,'№')
     err# = xlsx.WriteString(14,1,'$')
     err# = xlsx.WriteString(15,1,'%')
     err# = xlsx.WriteString(16,1,'&')
то строка 13 будет пустая. :( Подозреваю, что проблема где-то с конвертации в UTF, потому что
при вводе напрямую в Microsoft Excel или при экспорте через OLE символ '№' нормально записывается в ячейку.
Не смертельно ... но непонятно ! :)
У меня символ № корректно выводится. А вот для вывода & надо заменить на &. Не знаю, как лучше, либо в самом классе автоматически такие вещи разруливать, либо явно. Ситуации со спецсимволами могут быть разные.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

finsoftrz писал(а): 04 Январь 2018, 10:38А вот для вывода & надо заменить на &
Тут-то хоть более или менее понятно: Вы ведь напрямую пишите в XML файл - это спецификация XML.
А вот каким местом символ "№" вдруг стал СПЕЦСИМВОЛОМ - непонятно ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

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

libxlsxwriter for Clarion

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

finsoftrz писал(а): 04 Январь 2018, 11:04 В xml стиль прописывается аналогично, а вот высота строки явно с нужным (увеличенным) размером.
Не уверен, что дело в том, что Libre Calc жестко выставляет высоту строки.
Если пересохранить XLSX файл через Microsoft Excel - то WrapText в Libre Calc отрабатывается штатно.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

А скиньте файлик после сохранения в excel. Или сами гляньте в нем xl\worksheets\sheet1.xml для нужного row, что стоит в атрибуте ht. После сохранения из libre у меня в других строках значение 15, а в строке, где применен wrap, значение больше. LibxlsxWriter атрибут ht не применяет, если не задать явно высоту строки.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

finsoftrz писал(а): 04 Январь 2018, 11:33что стоит в атрибуте ht.
Файлы сбросил в личку. Да, Microsoft Excel записывает в аттрибут HT высоту строки ...
Но ведь в Microsoft Excel и оригинальный (записанный в XLSXWriter) сразу открывается с раздвижкой строк.
Значит параметр WrapText управляется каким-то другим тегом, который Libre Calc игнорирует.
Здесь нужно знать спецификацию XLSX формата, потому что методом "исcледования выхлопа" можно разбираться бесконечно долго. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Он управляется атрибутом wraptext у стиля. Но применение этого атрибута не приводит к автоматическому увеличению высоты в libre. А в excel и open office приводит. Возможно, у libre используется какой-то дополнительный атрибут, текст переносится, не измеяется высота строки.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Погуглил немного. Как я понял, это известный баг в libre. Рекомендуют устанавливать высоту строки явно. Я похожее делаю в dexcel, так как там тоже не поддерживается wraptext. То есть в бланке вписываю в ячейку специальную формулу для класса формирования xls. Но это явный костыль.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Руденко, помнится, рекомендовал для dexcel еще другой костыль - после формирования xls файла подключаться через ole и устанавливать wraptext для нужной колонки.
В общем, с libre засада, судя по всему.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

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

libxlsxwriter for Clarion

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

finsoftrz писал(а): 04 Январь 2018, 14:15В общем, с libre засада, судя по всему.
Да, ну не дружат между собой понятия "на шару" и "хорошо работает" ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить