libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
libxlsxwriter for Clarion
Rafael, я имел ввиду изменения в сишной функции, все остальное остается как было.
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Я тоже думал в этом направлении ... Вопрос скользкий, не стал делать.
Библиотека экспорта в XLSX здесь не причём, иначе бы это реализовали в питоне и базовой DLL.
Непривычно и т.д. (особенно если есть ввод формул пользователями) - это конечно да.
В общем случае, в формулах могут быть символьные строки, внутри которых ";" и ',' - распрарсить всё это можно, но сложно.
Наверно лучше подменять разделители на этапе сборки формулы, когда известны её компоненты (что в общем-то я и сделал).
Прямого чтения XLSX пока нет - а значит и нет проблем с тем как внутри XML эти формулы хранятся.
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Если и подменять, то перед передачей в сишную функцию, но Игорь уже ответил, что могут быть нюансы. Сам функции я править не буду, библиотека собирается по оригиналу, который скачивается после каждого коммита заново. В принуипе, можете поправить и собрать себе, тоже никто не мешает...
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Полностью согласен ! Если править оригинал (код C или класс Clarion) - это потерять возможность обновления.
Нет никаких проблем объявить свой метод на основе XLSX.WriteFormula, выполнить в нём Raplace формулы и вызвать PARENT метод ...
Нет никаких проблем объявить свой метод на основе XLSX.WriteFormula, выполнить в нём Raplace формулы и вызвать PARENT метод ...
За теми кто отстал - не возвращаться. (С) Кодекс
libxlsxwriter for Clarion
А в чем потери обновления?Игорь Столяров писал(а): ↑17 Февраль 2018, 22:05Полностью согласен ! Если править оригинал (код C или класс Clarion) - это потерять возможность обновления.
При очередном обновлении просто заменять в worksheet.c переделанную функцию worksheet_write_formula.
Полностью согласен.Игорь Столяров писал(а): ↑17 Февраль 2018, 21:45В общем случае, в формулах могут быть символьные строки, внутри которых ";" и ',' - распрарсить всё это можно, но сложно.
Ладно, запятая так запятая, ничего страшного.
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Кто-нибудь понял как работает последний параметр (Collapse) в методах SetRow / SetColumn ?
Или я один в пребываю в недоумении по этому поводу ?
Или я один в пребываю в недоумении по этому поводу ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Есть вопрос по денежным форматам Excel чисел ... Вот такой формат не проходит:
Это связано с тем, что маску формата тоже надо конвертировать в UTF-8 или
форматы с русскими буквами в принципе не поддерживаются ?
Код: Выделить всё
XLSX.Format.ExcelMask = '# ##0р.;-# ##0р.'
XLSX.SetFormat()
i# = XLSX.WriteNumber(1,1,1)
форматы с русскими буквами в принципе не поддерживаются ?
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Вероятно конвертация поможет, не учёл, попробуйте вот так
Код: Выделить всё
if clip(SELF.Format.ExcelMask)<>''
SELF.ConvertToUTF8(SELF.Format.ExcelMask)
format_set_num_format(SELF.FormatQ.Ref,SELF.Cstr)
end
libxlsxwriter for Clarion
Наверно должно быть так:
С латинской p все проходит. Значит...
Код: Выделить всё
XLSX.Format.ExcelMask = '# ##0"p.";-# ##0"p."'
C10, Win10x64
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Да, с конвертацией работает, но вылез еще нюанс - тока заменяется на запятую. Чтобы была точка надо брать в кавычки
Код: Выделить всё
'#,##0.0000"p.";-#,##0.0000"p."'
libxlsxwriter for Clarion
Кому-нибудь пригодится - https://support.office.com/ru-ru/articl ... fab54be7f4
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Всё-таки есть интересная диллема с формированием XLSX файлов прямой записью (не только LibXLSXWriter)
при экспорте многострочного текста (WrapText).
1. Что бы в Microsoft Excel корректно отрабатывал высоту строки по длине текста - нельзя выставлять высоту строки.
2. Если не выставлять высоту строки, то высота одострочной строки ВСЕГДА (!!!) XLSX:DEF_ROW_HEIGHT = 15
3. Это хорошо работает с размером шрифта по умолчанию (FontSize = 11), но если выставить, например FontSize = 6,
то всё будет плохо: высота одиночной строки значительно превосходит высоту шрифта ....
Т.е., как говорят шахматисты - мы здесь "попадаем на вилку" ...
Корректную работу WrapText можно получить только с размером шрифта по умолчанию.
Иначе надо всегда рассчитывать и выставлять высоту строки в зависимости от длины текста и параметров шрифта.
при экспорте многострочного текста (WrapText).
1. Что бы в Microsoft Excel корректно отрабатывал высоту строки по длине текста - нельзя выставлять высоту строки.
2. Если не выставлять высоту строки, то высота одострочной строки ВСЕГДА (!!!) XLSX:DEF_ROW_HEIGHT = 15
3. Это хорошо работает с размером шрифта по умолчанию (FontSize = 11), но если выставить, например FontSize = 6,
то всё будет плохо: высота одиночной строки значительно превосходит высоту шрифта ....
Т.е., как говорят шахматисты - мы здесь "попадаем на вилку" ...
Корректную работу WrapText можно получить только с размером шрифта по умолчанию.
Иначе надо всегда рассчитывать и выставлять высоту строки в зависимости от длины текста и параметров шрифта.
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Имею желание работать с форматами чисел, но не имею возможности ...
Выполняем потешный код:
Получается как на картинке. Разве в пятой строке формат числа не должен вернуться к значению по умолчанию ?
Заранее спасибо за содействие !
Выполняем потешный код:
Код: Выделить всё
xlsx.ClearFormat()
err#=xlsx.WriteNumber(3,1,123)
xlsx.Format.Picture='@n12.2'
xlsx.SetFormat()
err#=xlsx.WriteNumber(4,1,123)
xlsx.Format.Picture=''
xlsx.SetFormat()
err#=xlsx.WriteNumber(5,1,123)
Заранее спасибо за содействие !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libxlsxwriter for Clarion
Это и ежу понятно ... Принцип библиотеки LibXLSX в последовательной записи ячеек.
Мы выставляем шрифт, цвет, размер, стиль и начинаем записывать числа в ячейки.
При необходимости, для различных показателей, изменяя точность и формат отображения.
Если я не знаю какая точность у показателя - просто сбрасываю формат и будут показаны все значащие
цифры в дробной части. И здесь прекрасная и понятная идея Excel и LibXLSXWriter. Вопрос за её реализацией.
Если применять ClearFormat() - то придётся для каждой ячейки заново устанавливать все параметры экспорта.
А вот это уже совсем не весело.
За теми кто отстал - не возвращаться. (С) Кодекс