gifts2017

Загрузка прайс-листа с картинками из Excel и работа с буфером обмена

Опубликовал Александр Шкураев (salexdv) в раздел Программирование - Внешние компоненты

Недавно столкнулся с необходимостью загрузки большого количества прайсов от различных книжных издательств. Обязательным условием было сохранение в базе данных информации вместе с картинками (обложками книг).

Основной проблемой, конечно, стало сохранить картинку на диск.

Поначалу решил использовать cClipBoardObject.dll (автору компоненты большое спасибо за идею!), НО! Возникла следующая проблема: картинки сохраненные с помощью вышеуказанной компоненты имеют формат данных WMF (некоторые просмоторщики распознают как EMF) и при загрузке в базу картинки отображались некорректно, да и с конвертировать их при помощи Новый Картинка(...).Преобразовать(...) тоже не получилось - система упорно выдавала ошибку.

Решил написать собственную компоненту. Функционал небольшой:

2 свойства:

  • Тип файла/FileType - тип файла в который будет сохранено изображение из буфера обмена (0 - bmp, 1 - jpg, по умолчанию 1);
  • Сжатие/Compression - степень сжатия для файлов формата JPEG (значение по умолчанию 80);


1 Метод:

  • СохранитьИзБуфера/SaveFromClipboard(ПутьКФайлу);


Пока реализовано сохранение только для типа CF_MetaFilePict (WMF). При копировании из Excel картинки в буфер используется именно этот формат.
В будущем планирую расширить функционал компоненты и извлекать уже изображения и других типов.

Пример использования для 8.2.

На 7.7 тоже все работает.

Похожие разработки:

http://infostart.ru/public/19872/

http://infostart.ru/public/19932/

http://infostart.ru/public/16800/

 

http://shkuraev.ru

Скачать файлы

Наименование Файл Версия Размер
1CGClipboard.zip 440
.zip 205,95Kb
31.07.10
440
.zip 205,95Kb Скачать
ПримерИспользования.zip 105
.zip 200,96Kb
31.07.10
105
.zip 200,96Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 02.08.10 01:53
Посмотри на это http://infostart.ru/public/19932/
И на источник разработки.
Работает со всеми распространёнными форматами.
2. Alxd (salexdv) 02.08.10 07:08
3. Misha ⁠ (Magister) 05.08.10 14:48
Маньячество какое-то... а разве нельзя через VBA обратится к Excel и попросить его сохранить картинку на диск? С OpenOffice.org такое точно можно.
4. Alxd (salexdv) 05.08.10 14:51
(3) Может и можно... Если поделитесь наработками, буду очень признателен (и не я один) ;)
5. Misha ⁠ (Magister) 05.08.10 16:29
(4) У меня-то и Excel на компе нет. А вот по работе с OO.o поделиться могу (правда пока делал только формирование файла с картинками, гиперссылками). Но методы для сохранения на диск у объекта GraphicObjectShape есть.
6. Alxd (salexdv) 05.08.10 17:37
(5) Это понятно, а как передать обратно в 1С путь к картинке, чтобы сделать все как в вышеозначенном примере?
7. Misha ⁠ (Magister) 05.08.10 18:01
(6)
Что-то типа:
gProvider = Document.CreateInstance("com.sun.star.graphic.GraphicProvider");
Args = New COMSafeArray("VT_VARIANT", 2);
Args.SetValue(0, SetValue(ServiceManager, "URL", "file:///d:/123.jpg"));
Args.SetValue(1, SetValue(ServiceManager, "MimeType", "image/jpg"));
gProvider.storeGraphic(GraphicObjectShape.Graphic, Args);

Не проверял, но по идее должно работать.
8. Alxd (salexdv) 05.08.10 18:51
(7) Надо будет попробовать твое маньячество :D
9. Сергей (Che) Коцюра (CheBurator) 12.08.10 16:00
Автор, посмотри проект Йоксель - там вроде сделано извлечение картинок
10. Alxd (salexdv) 12.08.10 16:07
(9) Хорошая вещь, только вот под свои нужды уже написал.
Рекомендую данную обработку отнести еще к
"ПРОГРАММИРОВАНИЕ → ОБМЕН ДАННЫМИ, ИНТЕГРАЦИЯ → 1C + Excel"
для облегчения поиска ;)
11. Альберт (Альберт32) 26.10.11 09:27
12. Эльвира (egoel) 28.02.12 09:42
13. Alxd (salexdv) 28.02.12 11:32
(12) Да, эта обработка, как можно подгружать картинки из прайсов
14. Сергей Т (titakovserg) 16.03.12 10:43
Отличная обработка. Кадровики просили перенести фотки сотрудников из Эксел; думаю несложно будет переработать эту вещь под мою задачу
15. Alxd (salexdv) 16.03.12 10:54
(14) Сложностей возникнуть не должно. Лучше для работы с буфером используйте усовершенствованную версию этой компоненты
16. Ламия 07.12.12 10:51
Возможно глупый вопрос, а будет ли грузить, если картинки в прайсе и в отдельных файликах их нет?
17. Александр Шкураев (salexdv) 07.12.12 11:15
(16) Как раз для таких случаев, когда картинка только в прайсе присутствует
18. Ламия 07.12.12 11:59
Чтож попробуем скачать и воспользоваться тогда, надеюсь все получится
19. Ламия 07.12.12 13:30
А подскажите какого вида должен быть файл, в смысле что в какой колонке и в каком порядке.А то у меня просто создается куча пустых картинок в указанной папке,да и номенклатура никакая не грузится даже
20. Александр Шкураев (salexdv) 07.12.12 14:48
(19) В файле ПримерИспользования.zip есть образец прайса. Эта обработка служит примером получения картинки из excel, но она никак не сохраняет полученные данные. Просто на ее основе можно уже реализовать что-то свое
21. Ламия 07.12.12 16:16
Млииин,так хотелось загрузить картинки
22. Тима Осипов (net7wolf) 25.10.13 20:17
23. Vadim Pogosov (midavp) 10.02.16 15:08
Скачал пример и файл. Создает пустые файлы картинок!
24. Александр Шкураев (salexdv) 11.02.16 08:52
(23) midavp, какая ОС используется и версия MS Office?
25. Yura77 (Yura77) 09.11.16 10:31
(24) salexdv, office 2007, server 2008 R2 standart
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа