libxlsxwriter for Clarion

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

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

libxlsxwriter for Clarion

Сообщение vic7tar »

Игорь Столяров писал(а): 22 Февраль 2018, 8:11...Корректную работу WrapText можно получить только с размером шрифта по умолчанию.
Иначе надо всегда рассчитывать и выставлять высоту строки в зависимости от длины текста и параметров шрифта.
Ширина и высота строки зависят от параметров шрифта и его размера, их спокойно можно вычислять. А вот с определением ширины и высоты ячейки (строки и колонки) - тут проблемки, вернее отсутствие информации. Если вписать в ячейку какой-нибудь текст, то внутри ячейки присутствуют внутренние отступы текста от границ ячейки (слева или справа, сверху или снизу), которые явно зависят от размера шрифта и формата ячейки (левого или правого горизонтального выравнивания с n отступами, вертикального выравнивания).
По каким правилам рассчитываются эти отступы? - выясняю уже неделю, пока бес толку.
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

RaFaeL писал(а): 24 Февраль 2018, 22:52Если есть другие параметры формата, то сработает через очистку картинки.
OK ! Это решило бы вопрос. Подскажите пожалуйста, а как выполнить эту самую очистку картинки ?
Можно ли хотеть метод ClearPicture(), который сбросил бы параметры картинки, но оставил бы другие настройки формата ?
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Picture=''
ExcelMask=''
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

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

libxlsxwriter for Clarion

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

Загадка - шутка для всех ценителей сабжа ! ;)
Почему приведённый ниже безобидный код валит экспорт в XLSXWriter ?

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

  ...
Loc:R1 Real(0)
Loc:R2 Real(0)

  CODE
  ...
  xlsx.ClearFormat()
  err#=xlsx.WriteNumber(1,1,Loc:R1 / Loc:R2)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

libxlsxwriter for Clarion

Сообщение kreator »

Метод WriteNumber валится? Или где-то дальше?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

kreator писал(а): 27 Февраль 2018, 17:25Метод WriteNumber валится? Или где-то дальше?
Нет. Всё прекрасно и молча отрабатывается.
Вот только полученный XLSX файл является некорректным и не открывается Microsoft Excel.

Возможно, что-то с неправильной передачей данных непосредственно в DLL XLSXWriter,
потому что число передаётся в метод по значению и вот так всё работает:

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

  xlsx.ClearFormat()
  err#=xlsx.WriteNumber(1,1, 0 / 0)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

libxlsxwriter for Clarion

Сообщение kreator »

Библиотека честно пишет в файл значок бесконечности. А Эксель его не воспринимает. :D
А если без шуток, то результат деления на ноль в Кларионе ноль. Или я не прав? Если прав, то любой ноль должен давать такой результат. Проверьте.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

kreator писал(а): 27 Февраль 2018, 17:46Если прав, то любой ноль должен давать такой результат.
Нет, нет, нет ! Ноль прекрасно записывается, с этим нет никаких проблем.
Чек внутри метода тоже показывает, что переменная содержит 0 (ноль) на момент вызова функции из DLL ...
Но вот дальше, что-то происходит ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

libxlsxwriter for Clarion

Сообщение kreator »

Игорь Столяров писал(а): 27 Февраль 2018, 17:53 Ноль прекрасно записывается, с этим нет никаких проблем.
А 0.0000000001? Или 0.1E-15? Если тупо сделать round(Loc:R1 / Loc:R2, 0.0000000001)? Ненаучно! Да. Но чудес не бывает, число ведь вещественное. Получается, что не чистый ноль.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

kreator писал(а): 27 Февраль 2018, 18:12Получается, что не чистый ноль.
Или не совпадение типов данных при вызове процедуры из DLL ...
REAL - вообще самый неприятный тип данных, везде реализован с какими-то оговорками .... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Скорее всего, она не содержит 0, а просто выводится 0 когда вы пытаетесь ее прочитать, а внутри там в этот момент неопределенность, которая и передается в библиотеку и затем пишется в файл
https://ru.wikipedia.org/wiki/NaN
Поскольку здесь https://libxlsxwriter.github.io/workshe ... e8580c2289 написано что Эксель не поддерживает неопределенности но по IEEE-754 они допустимы, считаю что это не глюк а фича, проверять надо, что на что делим )) Или хотя бы сначала рассчитывать, потом передавать
Но пример интересный
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

RaFaeL писал(а): 27 Февраль 2018, 18:32а внутри там в этот момент неопределенность
И вроде бы да .... но есть 3 нюанса ... Забудем пока про LibXLSXWriter, смотрим со стороны Clarion.

1. Насколько я помню, нигде в документации на Clarion не указано, что что при делении на ноль в REAL записывается
неопределённость. Или тогда должна была быть проверка на эту неопределённость, что-то вроде проверки адреса на NULL.

2. Очень странно, что округление "неопределённости" до любой точности всегда даёт в результате явный ноль.
Не предельно минимальное / максимальное значение для этого типа данных, а именно конкретный ноль.

3. При использовании типа данных LONG в том же примере никаких неопределённостей не возникает.
Просто ноль и никаких проблем с LibXLSXWriter.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

libxlsxwriter for Clarion

Сообщение Губин Игорь »

Игорь Столяров писал(а): 27 Февраль 2018, 18:42асколько я помню
В Clarion вообще сложности с обработкой всяких "ситуаций". К примеру, примитивного переполнения от +=1 при бесконечном цикле
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить