libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
libxlsxwriter for Clarion
А нужно '<13,10>' в строке? Попробуй просто '<10>', многим программам и этого хватает...
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
В библиотеке функция lxw_escape_control_characters меняет коды с 01 по 1F на "_x%04X_". Зачем - не знаю, спросите у автора на гитхабе
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Конечно попробовал ! Всё вроде бы (!!!) работает.
Но тогда строка с переносом в XLSX не соответствует экселовскому аналогу, что неизвестно где аукнется.
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Да, точно. 0A не меняется а 0D меняется. Спросите, почему так, может уберёт строчку эту
Последний раз редактировалось RaFaeL 15 Март 2018, 14:07, всего редактировалось 1 раз.
libxlsxwriter for Clarion
Кларионовский парсер XML в секции CDATA сам превращает '<13,10>' в '<10>', после парсинга приходится вставлять перенос обратно. Скорее всего, это фича парсера
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
libxlsxwriter for Clarion
Меня что-то переклинило. XML прекрасно понимает <13> и <10>. В html, наверно, то, что я написал.
We are hard at work… for you.
libxlsxwriter for Clarion
А что значит "XML понимает"? Вот я вывожу XML-файл и в нём фрагмент
Потом парсю файл родным кларионовским парсером. и с удивлением вижу, что в поле <prog> переносы строки <13,10> заменились на <10>
Код: Выделить всё
<embed type="100">
<prog><![CDATA[select _hyper22
_document='CH2_1'
_hide=0
select ?Flash28
_hide=1
_fla2=1
_k=1
For _i=1 to 2
select ?Prompt{_i}
If _k={_i}
_Color=080H
_FontBold=1
elsIf _Color=080H
_Color=0808080H
end
End
]]></prog></embed>
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
OK ! Если все живы, тогда предлагаю от разминки перейти собственно к делу ....
Выполняем код:
Получаем результат:
Современная наука может объяснить содержимое ячейки A1 ?
Уточнение: проблема проявляется только в Apache Calc, в Microsoft Excel - всё OK !
Проблема исчезнет, если уменьшить цикл до 10 ... Класс !
Выполняем код:
Код: Выделить всё
err#=xlsx.WriteString(1,1,'12345<10>67890')
Loop j# = 2 to 40
err#=xlsx.WriteString(j#,1,j#)
end
Современная наука может объяснить содержимое ячейки A1 ?
Уточнение: проблема проявляется только в Apache Calc, в Microsoft Excel - всё OK !
Проблема исчезнет, если уменьшить цикл до 10 ... Класс !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Я поясню предыдущий вопрос ... Дело в том, что это не "высосанная из пальца" проблема,
а формализованная демонстрация достаточно серьёзной ошибки.
Первая строчка - это шапка таблицы, в которой есть перенос строк. Цикл - экспорт самой таблицы.
Т.е. валится экспорт любой (!!!) таблицы, в заголовке или шапке которой есть принудительное разбиение на строки.
а формализованная демонстрация достаточно серьёзной ошибки.
Первая строчка - это шапка таблицы, в которой есть перенос строк. Цикл - экспорт самой таблицы.
Т.е. валится экспорт любой (!!!) таблицы, в заголовке или шапке которой есть принудительное разбиение на строки.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
libxlsxwriter for Clarion
Я так понимаю - библиотека не гарантирует совместимости созданного файла с другими программами, кроме самого Экселя? А ведь идея - формировать файл без каких-либо доп. средств. В общем, пока грустновато. Может у разработчиков найдётся время для адаптации не под Эксель. А файл с такими наворотами, пересохранённый самим Экселем, читается Калком?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Вот это не факт ... Microsoft Excel вполне может просто корректировать некоторые явные проблемы в структуре XLSX файла.
Помните, мы разбирали, что-то подобное, если для строки явно не указана высота ?
Или, если сделать ошибку в структуре XLSX (например пересечение диапазонов MERGE), то Calc - просто клинит,
а Excel выдаёт ошибку, но пытается показать таблицу без проблемной ячейки или области ячеек ...
Да. Главный плюс XLSXWriter - это возможность создавать отчёты без коммерческого офисного пакета Microsoft Office
или платной библиотеки, например, EasyOpenOffice (в которой, кстати, то же есть не решённые проблемы).
Поэтому хотелось бы понять, что происходит. Но вряд ли такой очевидный глюк именно в самом Calc ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
libxlsxwriter for Clarion
Если в OO Calc сохранить в формате sxc (примерно то же, что xlsx), то ячейка с переносом кодируется так:
Код: Выделить всё
-<table:table-cell table:value-type="string">
<text:p>Line1</text:p>
<text:p>Line2</text:p>
</table:table-cell>
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Да можно проще. Также кодируется перенос внутри ODS если создать его в Calc. Там свой, совсем другой формат.
В XLSX, созданном Microsoft Excel, перенос строки кодируется обычными <13,10> (см. ниже, я об этом писал).
XLSXWriter делает какую-то манипуляцию с заменой этих кодов на служебные символы, и именно здесь что-то и просходит.
Microsoft Excel эту замену понимает, а Calc - нет. Наверно в этой замене есть какой-то тайный смысл, я не знаю ....
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
А как кодируется перенос в xlsx созданном и сохраненном в Calc?Игорь Столяров писал(а): ↑16 Март 2018, 15:13В XLSX, созданном Microsoft Excel, перенос строки кодируется обычными <13,10> (см. ниже, я об этом писал).
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Традиционный Apache Calc XLSX только читает, а Libre Calc записывает вот так: <si><t xml:space="preserve">12345 67890</t></si>
(перенос между 5 и 6). XLSX файл прикрепляю к сообщению.
Но XLSX файлы созданные в Microsoft Excel, с преносом <13,10> - прекрасно открываются везде ...
- Вложения
-
- LibreCalc.zip
- (4.19 КБ) 85 скачиваний
За теми кто отстал - не возвращаться. (С) Кодекс