Страница 29 из 62

libxlsxwriter for Clarion

Добавлено: 12 Февраль 2017, 14:06
RaFaeL
Создание файлов Excel (xlsx) без использования Excel на основе проекта libxlsxwriter (https://libxlsxwriter.github.io). Можно создавать файлы, листы в них, писать данные (текст (в т.ч. русский), число, дата, время), ставить форматирование (цвет, рамки, шрифт, выравнивание, размер), объединять ячейки, фиксировать и скрывать строки и колонки, вставлять изображения, рисовать графики (диаграммы), устанавливать настройки печати и свойства документа.
Для конвертирования "картинок" форматов используется библиотека Tpicture от Taboga, у кого этого класса нет замените на что-то свое

libxlsxwriter for Clarion

Добавлено: 04 Февраль 2018, 16:45
Игорь Столяров
RaFaeL писал(а): 04 Февраль 2018, 16:12Но в библиотеку никаких вставок точно не буду добавлять
Да, спасибо, я понял. Никаких проблем.
Рекомендуемое и правильное решение вопроса я услышал, будем делать ! :)

libxlsxwriter for Clarion

Добавлено: 05 Февраль 2018, 9:44
RaFaeL
Добавили уровни. Попробуйте

libxlsxwriter for Clarion

Добавлено: 05 Февраль 2018, 20:07
RaFaeL
Попробовал сам. Работает отлично, но пока нет настройки расположения управляющих кнопок

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 19:00
RaFaeL
Добавлены настройки отображения уровней

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 20:01
Игорь Столяров
Дед Пахом писал(а): 04 Февраль 2018, 11:32На кой ляд класс в приложении объявлять? include('myxlsx.inc')
Я извиняюсь за свою темноту, но что-то никак не могу прокусить это место ... :(
Если я в хвост xlsxWriter.inc добавлю свой класс (и далее в программе его использую), то всё прекрасно.

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

!xlsxWriter.inc
....
xlsxmyuser    CLASS(xlsxwriter), TYPE, MODULE('myxlsx.clw'), LINK('myxlsx.clw')
MyLong      Long
            END
Но если я выношу свой класс в отдельный файл myxlsx.inc
и в APP -> After Global Include добавляю строчку с его включением в проект:

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

  Include('xlsxwriter.inc')
  Include('myxlsx.inc')
то всё компилируется (есстесно), но на этапе сборки получаю Unresolved External xlsxmyuser ....
Почему всё так ? :(

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 20:04
Дед Пахом
myxlsx.inc должен содержать строку

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

Include('xlsxwriter.inc')
а APP не должен.

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 21:08
Игорь Столяров
Дед Пахом писал(а): 06 Февраль 2018, 20:04myxlsx.inc должен содержать строку
Неа ! Пробовал. Что-то тут не чисто ... :(
Сделал элементарный концепт проблемы на основе штатного примера.
Если есть возможность - посмотрите пожалуйста.

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 21:12
Дед Пахом
Я бы посмотрел, да "rar" не понимаю.

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 21:15
Игорь Столяров
О ! Раньше форум RAR не принимал ... :)
Заменяем на ZIP.

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 21:31
Дед Пахом
В xlsxmy.clw не тот файл инклюдится.

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

  Include('xlsxmy.inc')
  
Так у меня по крайней мере компилится (но не собирается, потому что lib не подключена в проекте).

libxlsxwriter for Clarion

Добавлено: 06 Февраль 2018, 21:43
Игорь Столяров
Ура ! Заработало ! Спасибо ! :)

Но как всё запущено ... Почему бы компилятору не написать это человеческим языком ?
Теперь можно добавлять свои методы и данные в XLSXWriter не изменяя авторскую обёртку,
сделанный ранее код на 100% совместим и абсолютно нет необходимости вводить для этого
пятиэтажные имена данных и методов. Это место проехали. Ещё раз спасибо ! :)

libxlsxwriter for Clarion

Добавлено: 07 Февраль 2018, 8:18
Игорь Столяров
Рискну ещё выйти с предложением ... ;) Можно ли добавить в метод MERGE обработку особого условия:

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

xlsxwriter.Merge ...
   if omitted(6)
      ....
   elsIf (first_row_ = last_row_) and (first_col_ = last_col_)
      Self.WriteString( ....
   else ...
      ....    
Потому что, например, вот такой код просто игнорируется:

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

   Row# = 5
   Col# = 3
   xlsxwriter.Merge(Row#,Col#,Row#,Col#,'Привет !')
Когда идёт прорисовка отчёта в динамике, эпизодически попадаю на эту комбинацию ...
В общем-то нет ничего плохого в том, что в метод передаётся "диапазон" из одной ячейки, это скорее особенность
библиотеки по работе с диапазонами, которую можно убрать.

libxlsxwriter for Clarion

Добавлено: 07 Февраль 2018, 9:51
RaFaeL
Добавил

libxlsxwriter for Clarion

Добавлено: 07 Февраль 2018, 10:56
Игорь Столяров
Спасибо. А вот еще вопрос с фронта работ (я ещё разбираюсь !).
Группировка строк устанавливается методом SetRow(), у которого второй обязательный параметр - это высота строки.
Т.е. получается, что строки с WrapText нельзя группировать ?
Точнее обязательно нужно жёстко устанавливать высоту строки внутри группы. Я правильно понимаю ?

libxlsxwriter for Clarion

Добавлено: 07 Февраль 2018, 10:59
RaFaeL
Попробуйте передать 15