Страница 46 из 61

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 13:35
Дед Пахом
RaFaeL писал(а): 20 Февраль 2019, 13:02Лайкаем запись и ждем пока автор реализует.
Я так понял, автор ждёт, когда ему переведут $800.

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 13:42
RaFaeL
Дед Пахом писал(а): 20 Февраль 2019, 13:35Я так понял, автор ждёт, когда ему переведут $800.
В других задачках типа
https://github.com/jmcnamara/libxlsxwriter/issues/37
https://github.com/jmcnamara/libxlsxwriter/issues/90
не дождался, так реализовал. Так что надеемся на лучшее ))

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 14:30
kreator
Макнамара пытается быть хитрым. Выставил сложность в пятёрку (максимальную) и просит бабла. ИМХО, добавить тег "Comment" к ячейке плёвое дело.
RaFaeL, а этот "ANSI C" код кларионовским компилятором никак?

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 14:53
Игорь Столяров
kreator писал(а): 20 Февраль 2019, 14:30Макнамара пытается быть хитрым. Выставил сложность в пятёрку (максимальную) и просит бабла
На самом деле там с этими комментариями не всё просто. Насколько я знаю, через OLE это не делается и
разработчик EasyExcel эту возможность приводил в пример преимущества своего продукта … ;)

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 16:41
kreator
Игорь Столяров писал(а): 20 Февраль 2019, 14:53 Насколько я знаю, через OLE это не делается
Делается:

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

  	LOC:OLE{'Range("A1").Select'} 
  	LOC:OLE{'Range("A1").AddComment'} 
  	LOC:OLE{'Range("A1").Comment.Visible'} = 0
  	LOC:OLE{'Range("A1").Comment.Text("KreatoR<10>Тест.")'}
И сам Эксель выгружает в xml эти примечания в примитивном виде. Много ума не надо.

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 16:49
Игорь Столяров
Спасибо ! Буду знать. :)
Хотя через OLE сейчас только читаем XLSX файлы … весь экспорт делается в XLSXWriter. :)

libxlsxwriter for Clarion

Добавлено: 20 Февраль 2019, 17:45
RaFaeL
kreator писал(а): 20 Февраль 2019, 14:30RaFaeL, а этот "ANSI C" код кларионовским компилятором никак?
Представления не имею, скачайте да попробуйте )
Особой разницы не вижу, разве что если кому отдельная dll мешается
В любом случае я этот код на С дописывать не буду, а кто хочет дописать так может и так дописать и собрать... Я собираю в MinGW через MSYS

libxlsxwriter for Clarion

Добавлено: 18 Март 2019, 9:03
gopstop2007
хотел поднять старый вопрос про вставку картинок как в viewtopic.php?p=33386#p33386
но выскакивает ошибка. Кто решил вопрос, или знает решение?
Спасибо за внимание

libxlsxwriter for Clarion

Добавлено: 18 Март 2019, 9:29
Игорь Столяров
gopstop2007 писал(а): 18 Март 2019, 9:03хотел поднять старый вопрос про вставку картинок
Не совсем понятно в чём проблема … ? Может быть на базе штатного примера сделаете демонстрацию проблемы ?
По ссылке идёт обсуждение какого-то открытия с указанием отрицательных размеров картинки … может в этом проблема ?

libxlsxwriter for Clarion

Добавлено: 18 Март 2019, 9:41
gopstop2007
Игорь Столяров писал(а): 18 Март 2019, 9:29По ссылке идёт обсуждение какого-то открытия с указанием отрицательных размеров картинки … может в этом проблема ?
указаны отрицательные позиции для картинки, чтобы она(картинка) вставлялась("вписывалась") в размер клетки. На тот момент это было простое решение :)

libxlsxwriter for Clarion

Добавлено: 18 Март 2019, 10:25
Игорь Столяров
gopstop2007 писал(а): 18 Март 2019, 9:41На тот момент это было простое решение
Это не решение. В оригинальной документации нет работы с отрицательными размерами картинки.
см. https://libxlsxwriter.github.io/workshe ... 46fe730f6f

Просто срабатывала какая-то защита от дурака в Microsoft Excel (как в Clarion при делении на ноль) и
происходил сброс размера картинки по размеру ячейки. Но видимо это поддерживается не везде и не всегда ...

libxlsxwriter for Clarion

Добавлено: 19 Март 2019, 20:57
gopstop2007
Игорь Столяров писал(а): 18 Март 2019, 10:25 Это не решение. В оригинальной документации нет работы с отрицательными размерами картинки.
см. https://libxlsxwriter.github.io/workshe ... 46fe730f6f
Спасибо, я в курсе :) Вот руки "дошли", сделал вписывание в клетку не зависимо от размера клетки и размера картинки.
Размер вычислял не открывая картинки, за это отдельное спасибо Yufil

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

CODE
r_path	string(255) 				! файл с картинкой
r_sizeH     decimal(7,2)			! высота в картинке (пикселях)
r_photoH	real				! высота колонки Excel
r_scale	decimal(7,2)				! маштаб - сооотноение
DATA

            Image# = Create(0,CREATE:image) 
            Image#{Prop:Noheight} = True
            Image#{Prop:NoWidth} = True 
            0{Prop:Pixels} = True 
            Image#{Prop:Text} = r_path   		! Загрузим картинку
            ! r_sizeW = Image#{Prop:Width}          	 
            r_sizeH = Image#{Prop:Height}          	 
            Destroy(Image#) 
            0{Prop:Pixels} = False
            r_scale = r_photoH / (r_photoH + r_sizeH) 
            err#=xlsx.InsertImage(l_row,l_column,r_path,1,1,r_scale,r_scale)

libxlsxwriter for Clarion

Добавлено: 19 Март 2019, 21:44
Игорь Столяров
gopstop2007 писал(а): 19 Март 2019, 20:57Вот руки "дошли"
Отлично, но это простейший вариант и … извините, но немного некорректный.
Нужно масштабировать картинку по большей стороне и, к сожалению, в Microsoft Excel единица измерения ячейки - не пиксел.
Сделайте экспорт сотни разношёрстных картинок - сразу всё увидите.

Из опций - хорошо бы оставлять отступ от края ячейки и центровать неквадратную картинку по горизонтали / вертикали с учётом отступа.
Кларионовский Image поддерживает не все форматы и косячно работает с полноцветными BMP и GIF.
Размер картинки хорошо получать через библиотеку FreeImage, там правда своеобразная ед. измерения, но зато точно. :)
Ну и вопрос размера картинки. Желательно сопоставлять размер ячейки и картинки, и выполнять её нормализацию перед вставкой.
Иначе при экспорте какого-нибудь каталога образцов товаров с картинками 100x100 можно получить на выходе гигабайтный XLSX. :)

Где-то пол-года назад подробно обсуждали в этой ветке тему вставки графики - если интересно посмотрите.

libxlsxwriter for Clarion

Добавлено: 19 Март 2019, 22:17
Дед Пахом
Игорь Столяров писал(а): 19 Март 2019, 21:44Размер картинки хорошо получать через библиотеку FreeImage, там правда своеобразная ед. измерения, но зато точно.
В смысле своеобразная? Разве вот это не пиксели возвращает?

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

  w = fi.iImage.GetWidth()
  h = fi.iImage.GetHeight()

libxlsxwriter for Clarion

Добавлено: 19 Март 2019, 22:27
Игорь Столяров
Дед Пахом писал(а): 19 Март 2019, 22:17Разве вот это не пиксели возвращает?
Точно ! Перепутались в голове две разные сказки. :)
Размер ВСЕГДА получается в пикселях, а вот РАЗРЕШЕНИЕ в точках / метр.

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

     theImage.iImage.SetDotsPerMeterX(3780)   ! Установить разрешение 96 т/дюйм = 3780 т/метр
     theImage.iImage.SetDotsPerMeterY(3780)