Основной проблемой, конечно, стало сохранить картинку на диск.
Поначалу решил использовать 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/19932/
И на источник разработки.
Работает со всеми распространёнными форматами.
(1) Ок, гляну
Маньячество какое-то… а разве нельзя через VBA обратится к Excel и попросить его сохранить картинку на диск? С OpenOffice.org такое точно можно.
(3) Может и можно… Если поделитесь наработками, буду очень признателен (и не я один) 😉
(4) У меня-то и Excel на компе нет. А вот по работе с OO.o поделиться могу (правда пока делал только формирование файла с картинками, гиперссылками). Но методы для сохранения на диск у объекта GraphicObjectShape есть.
(5) Это понятно, а как передать обратно в 1С путь к картинке, чтобы сделать все как в вышеозначенном примере?
(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);
Не проверял, но по идее должно работать.
(7) Надо будет попробовать твое маньячество 😀
Автор, посмотри проект Йоксель — там вроде сделано извлечение картинок
(9) Хорошая вещь, только вот под свои нужды уже написал.
Рекомендую данную обработку отнести еще к
«ПРОГРАММИРОВАНИЕ → ОБМЕН ДАННЫМИ, ИНТЕГРАЦИЯ → 1C + Excel»
для облегчения поиска 😉
Хорошая обработка.
Это обработка для 8ки?
(12) Да, эта обработка, как можно подгружать картинки из прайсов
Отличная обработка. Кадровики просили перенести фотки сотрудников из Эксел; думаю несложно будет переработать эту вещь под мою задачу
(14) Сложностей возникнуть не должно. Лучше для работы с буфером используйтеусовершенствованную версию этой компоненты
Возможно глупый вопрос, а будет ли грузить, если картинки в прайсе и в отдельных файликах их нет?
(16) Как раз для таких случаев, когда картинка только в прайсе присутствует
Чтож попробуем скачать и воспользоваться тогда, надеюсь все получится
А подскажите какого вида должен быть файл, в смысле что в какой колонке и в каком порядке.А то у меня просто создается куча пустых картинок в указанной папке,да и номенклатура никакая не грузится даже
(19) В файле ПримерИспользования.zip есть образец прайса. Эта обработка служит примером получения картинки из excel, но она никак не сохраняет полученные данные. Просто на ее основе можно уже реализовать что-то свое
Млииин,так хотелось загрузить картинки
для 8.1 нужна такая
Скачал пример и файл. Создает пустые файлы картинок!
(23) midavp, какая ОС используется и версия MS Office?
(24) office 2007, server 2008 R2 standart
Может кто подскажет, почему тестовая обработка не работает? Вернее, что я делаю не так.
Валится на ЗагрузитьВнешнююКомпоненту («Не найдена компонента «»1CGClipboard»», без нее работа невозможна!»).
Регистрировал её вручную. ПодключитьВнешнююКомпоненту проходит, а вот создать объект для работы с буфером обмена нет((
(26) Если вы делаете так:
то dll должна лежать в каталоге исполняемых файлов программы.
Если компонента лежит где-то в другом месте, то надо вызывать так:
(27) Спасибо за оперативный ответ! Извиняюсь за свой долгий ответ.
Думал у меня проблемы с рабочим компом (прав может не хватает), но я и дома проверил. Проблема осталась. Решил свой вопрос другим путем.
Добрый день. Подскажите как решить проблему, Скачать Обработку и dll все зарегал все работает, но картинки не появляются и в папке создаются изображения с 0 размером. ОС Windows сервер 2008R2 и Excel 2007 (Пробовал на Windows 10 и Excel 2007 тот же результат), Помогите очень надо данный механизм.
Здравствуйте! Попробуйте использоватьэту разработку или её бесплатный аналог .
Это же редактор картинок в 1с а мне надо получить картинку из excel в 1с
(31) Это усовершенствованные версии. В них есть метод ПолучитьИзображение(). Если вызвать этот метод с пустым параметром, то картинка берется из буфера обмена. Потом остается вызвать только СохранитьИзображение()