libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 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 КБ) 983 скачивания
Последний раз редактировалось RaFaeL 30 Декабрь 2021, 19:19, всего редактировалось 40 раз.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Для имен файлов у меня вот так:
Код: Выделить всё
checkstr string('\/:*?"<>|')
Код: Выделить всё
if match(lfile,'[\/:*?"<>|]',Match:Regular)
loop ch1#=1 to len(checkstr)
loop ch2#=1 to len(clip(lfile))
if lfile[ch2#]=checkstr[ch1#]
lfile[ch2#]='_'
end
end
end
end
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
В принципе можно ж в поставку вставить функцию strout=XSLX:Normalize(strin) это обертке не помешает. Давайте тогда оптимальный алгоритм )
- Игорь Столяров
- Ветеран движения
- Сообщения: 8019
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
libxlsxwriter for Clarion
Ага ! Идея-то неплохая.

Ваш алгоритм и есть оптимальный - у меня тоже самое, только я тупо перебираю строку всегда.

Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Код: Выделить всё
XLSX:Normalize(STRING In_,BYTE valchar_=95),STRING
Код: Выделить всё
XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)
CODE
l#=len(In_)
loop i#=1 to l#
if instring(In_[i#],'/\[]:*?')
In_[i#]=chr(valchar_)
end
end
if l#>31
return In_[1:31]
end
return In_
- Игорь Столяров
- Ветеран движения
- Сообщения: 8019
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
libxlsxwriter for Clarion
Ура ! Спасибо !

Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ?

Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
libxlsxwriter for Clarion
Готовую функцию то самостоятельно уж можно в код вставить, думаюИгорь Столяров писал(а): 18 Февраль 2019, 13:44Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ?
- Губин Игорь
- Шубуршун
- Сообщения: 2573
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
libxlsxwriter for Clarion
...
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 12:18, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
- Дед Пахом
- Старичок
- Сообщения: 3285
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 48 раз
- Контактная информация:
libxlsxwriter for Clarion
Эффективнее проверку на >31 в цикл встроить, а то передадут строку размером в гиг, цикл её будет всю по символу перебирать.
С уважением, ДП
- Губин Игорь
- Шубуршун
- Сообщения: 2573
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
libxlsxwriter for Clarion
Если автор не возражает
Код: Выделить всё
XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)
CODE
l#=len(In_)
if l# > 31 Then
l# = 31
end
loop i#=1 to l#
if instring(In_[i#],'/\[]:*?')
In_[i#]=chr(valchar_)
end
end
return In_[1:l#]
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 11:02, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- Шубуршун
- Сообщения: 2573
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
libxlsxwriter for Clarion
И ещё немного "защиты от дурака"
Код: Выделить всё
XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)
CODE
l#=len(In_)
if l# > 31
l# = 31
end
if instring(chr(valchar_),'/\[]:*?')
valchar_ = 95
end
loop i#=1 to l#
if instring(In_[i#],'/\[]:*?')
In_[i#]=chr(valchar_)
end
end
return In_[1:l#]
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 11:01, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8019
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
libxlsxwriter for Clarion
Ура ! Заработала ! Спасибо ! 
По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …
Колёса вертятся, но ничего не меняется.

По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …
Колёса вертятся, но ничего не меняется.

Make Clarion Great Again ! 
- Губин Игорь
- Шубуршун
- Сообщения: 2573
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 26 раз
libxlsxwriter for Clarion
Игорь Столяров писал(а): 18 Февраль 2019, 17:00По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …
Я, в данной ситуации, предпочитаю считать себя реинкарнацией Хана Ван Мегина

Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8019
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
libxlsxwriter for Clarion
Сам такой - хочется нафигачить всего и побольше. 
Что в общем-то и сделал: экспорт разделителей, чисел по формату, картинок вписанных в квадрат с отступами,
установка высоты строки для объединённых ячеек по длине текста и т.д.
Но есть тонкая грань - что действительно нужно в базовом классе, а что локальные надуманные доделки …

Что в общем-то и сделал: экспорт разделителей, чисел по формату, картинок вписанных в квадрат с отступами,
установка высоты строки для объединённых ячеек по длине текста и т.д.
Но есть тонкая грань - что действительно нужно в базовом классе, а что локальные надуманные доделки …

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5228
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
libxlsxwriter for Clarion
Кстати, а в последних версиях ms office файлики нормально читаются? Я полгода назад одному товарищу отправлял, у него вылезали разные сообщения об ошибках, хотя открыть он смог. При этом в опенах все открывалось без проблем. Какое там состояние на сегодня?
C6/C12, ШВС, tps/btrieve.