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

libxlsxwriter for Clarion

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

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 7:16
Игорь Столяров
Добавил в штатную демку библиотеки пример экспорта произвольной картинки в квадратную ячейку заданного размера.
Предлагаю обсудить решение вопроса, конструктивная критика приветствуется ! :)

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 10:46
finsoftrz
В жизни надо, когда высота строки не известна. Как вариант, создавать текстовый контрол и определять высоту.

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 10:57
finsoftrz
Хотя разумнее выглядит выводить картинку с фиксированными размерами, чтобы соблюдать пропорции.

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 12:58
RaFaeL
Просьба потестировать текущий вариант
Обратите внимание - изменился метод InsertImage

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 13:14
gopstop2007
Игорь Столяров писал(а): 07 Январь 2018, 7:16 Добавил в штатную демку библиотеки пример экспорта произвольной картинки в квадратную ячейку заданного размера.
Предлагаю обсудить решение вопроса, конструктивная критика приветствуется ! :)
Огромное спасибо Игорь, чувствуется профессиональный подход к вопросу, рамочка и т.п.
С картинками есть много нюансов
1. Картинку можно вставить как "есть", то есть при вставке размер вставляемой картинки файла не меняется и соответственно при вставке больших картинок размер Excel файла будет большой. Для уменьшения размера Excel, уменьшаем размер самих вставляемых картинок.
2. Картинки можно "вставлять" ссылкой только отображая в Excel (2010 и выше) сами файлы будут находится "где то рядом". Удобно, например когда фото на сайте :)
Макрос в Excel

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

Sub CropImage()
    Filename$ = "C:\Users\хххх\Desktop\IMG_12082014_222844.png"
 
    Dim pic As Picture
    Set pic = ActiveSheet.Pictures.Insert(Filename$) ' вставка на лист
    
    With pic.ShapeRange.PictureFormat ' сколько с какой стороны обрезать
        .CropLeft = 50
        .CropTop = 60
        .CropBottom = 70
        .CropRight = 80
    End With
End Sub
Это то что вспомнил, пока :)
С праздником всех!

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 17:01
Артур
RaFaeL писал(а): 07 Январь 2018, 12:58Просьба потестировать текущий вариант
А libxlsxwriter.dll забыл вложить ?

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 17:40
RaFaeL
Не менялся, пока актуальный тот что в шапке

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 19:06
Артур
RaFaeL писал(а): 07 Январь 2018, 12:58Просьба потестировать текущий вариант
Протестировал. Спасибо. Меня все устраивает, мои пожелания учтены.

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 19:16
Игорь Столяров
gopstop2007 писал(а): 07 Январь 2018, 13:14С картинками есть много нюансов
Да, я полностью с Вами согласен.
Указанное утром решение является частным случаем, есть много ньюансов связанных с масштабированием
картинок с произвольным разрешением ...

Что касается примеров на VBA - есть смысл посмотреть оригинальное описание библиотеки LibXLSXWriter.
Мы ведь стараемся прикрутить к Clarion существующую библиотеку и использовать её возможности,
а не пишем "с нуля" всё, что позволяет делать язык макросов Microsoft Excel. ;)

libxlsxwriter for Clarion

Добавлено: 07 Январь 2018, 22:51
Игорь Столяров
RaFaeL писал(а): 07 Январь 2018, 12:58Просьба потестировать текущий вариант
Спасибо ! Вопрос с InsertImage() закрыт. :)

Кстати, хочу обратить внимание на одну приятность.
При экспорте картинок через OLE на больших списках (20-60 т. записей) накапливается вертикальная и горизонтальная
погрешности, картинки "съезжают". Как я понимаю это происходит из-за расчёта графических координат картинок на листе.
Приходится постоянно корректировать, перерисовывать лист и т.д.
В XLSXWriter вставка графики выполняется предельно чётко, а так как можно расчитывать масштабирование рисунков
с высокой точностью то и более корректно и красиво, даже без минимальных искажений. :)

libxlsxwriter for Clarion

Добавлено: 08 Январь 2018, 13:34
RaFaeL
Обновил стартовый пост

libxlsxwriter for Clarion

Добавлено: 09 Январь 2018, 9:33
Артур
RaFaeL писал(а): 08 Январь 2018, 13:34Обновил стартовый пост
Подскажи пожалуйста какой командой можно установить свойство автоподобра высоты строк на листе

libxlsxwriter for Clarion

Добавлено: 09 Январь 2018, 10:31
RaFaeL
Выше обсуждалось вроде... Если установить свойство WrapText то Excel сам увеличит высоту строки при открытии, Libre так не умеет
Автоподбор ширины колонки - никак (https://libxlsxwriter.github.io/faq.html предпоследний)
Это не свойства файла, это функции рантайма

libxlsxwriter for Clarion

Добавлено: 09 Январь 2018, 11:15
Игорь Столяров
Подскажите пожалуйста, а можно ли как-то управлять толщиной линий сетки ?

Часто бывает нужно вертикальной жирной линией отделить группу колонок и практически во всех
отчётах неплохо смотрится при печати отделение шапки двойной линией, например вот так:

excel.jpg

Заранее спасибо за помошь ! :)

libxlsxwriter for Clarion

Добавлено: 09 Январь 2018, 11:36
RaFaeL
Можно добавить, я пока этого не делал, так как в кларионе штатно таких типов линий вроде нет