Сохранение картинки из MS Excel в файл без использования внешних компонент

27.05.13

Интеграция - Загрузка и выгрузка в Excel

Казалось бы, чего может быть проще, чем выгрузить картинку из excel: найди объект картинки, у объекта найди метод Save или Export или что-нибудь подобное, но не сложнее того.

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

Наименование Файл Версия Размер
ExportPicturesFromExcel.cf
.cf 11,64Kb
35
.cf 11,64Kb 35 Скачать

Простого пути не нашел, пришлось идти окольными путями.

Конечно же, сначала в интернет... обнаружил, что люди сталкиваются с теми же проблемами, что и я.


Немного об объектной модели Excel.


1. Приложение: Application. Приложение мы создаем так:

    Application = Новый COMОбъект("Excel.Application");

 

2. Приложение имеет колекцию книг: Application.Workbooks.

Файл эксель открывается как книга Workbook, т.е. элемент коллекции Workbooks, например,

    Workbook = Application.Workbooks.Item(0);

или когда хотим открыть файл-excel

    Workbook = Application.Workbooks.Open(ПутьКФайлу);

 

3. Коллекция листов и диаграмм Workbook.Sheets,

можно и по отдельности обойти коллекцию листов Workbook.Worksheets и коллекцию диаграмм Workbooks.Charts, а можно одним махом через коллекцию Sheets.

Каждый элемент этой коллекции (лист или диаграмма) имеют свойство  Shapes с коллекцией объектов Shape, дословно "фигура".

 

4. Коллекция фигур Sheet.Shapes содержит коллекцию различных графических объектов листа или диаграммы.

В числе этих графических объектов можно найти и картинку.

 

5. Картинка. Каждый элемент Shape коллекции Shapes имеет свойство Shape.Type, которое принимает значения перечисления MsoShapeType. Одно из значений этого перечислений MsoShapeType.msoPicture = 13. То, что нужно.

Таким образом мы можем найти все объекты картинок в любом файле MS Excel, и это не сложно. 


6. Картинку в файл. А вот, что делать каждым объектом Shape, чтобы его выгрузить в файл - это уже вопрос.

Методов у фигуры Shape много. Единственный, хоть как-то касающийся вопроса, это метод CopyPicture, при вызове этого метода картинка копируется в буфер обмена. От чего легче не становится.

Встает другой вопрос, как достать из буфера картинку, или переложить в другой объект Excel, где есть нужные методы.

Можно было бы экспортировать лист с нужной картинкой в HTML документ, а затем в папке документа html *.files поискать картинки. Сумбурный метод.

Оказывается, удобней из буфера переложить картинку в объект диаграммы Chart, при этом подогнав размеры диаграммы под картинку, а диаграмму можно аккурат сохранить как картинку в нужный файлик. Это уже порядок.

Всем этим занимается следующая функция. Даём ей объект Shape, ИмяФайла и ТипФайла:

//  Сохранение картинки из объекта Shape в файл.
//      FilterName - строка, JPG, GIF, PNG, BMP и т.д.
Функция СохранитьКартинкуВФайл(Shape, FileName, FilterName = Неопределено) Экспорт

   
//  Инициализируем константы VBA.
   
msoFalse = 0;
   
msoPicture = 13;
   
xlLineStyleNone = -4142;
   
xlWBATWorksheet = -4167;

   
//  Проверяем тип объекта.
   
Если Shape.Type <> msoPicture Тогда
        Возврат Ложь;
    КонецЕсли;

   
//  Создаем новую книгу с единственным листом.
   
Книга = Shape.Application.Workbooks.Add(xlWBATWorksheet);

   
//  Создаем диаграмму, в которую копируем картинку.
   
Диаграмма = Книга.Worksheets.Item(1).Shapes.AddChart().Chart;

   
//  Устанавливаем размер диаграммы как у картинки.
   
Диаграмма.ChartArea.Height = Shape.Height;
   
Диаграмма.ChartArea.Width = Shape.Width;

   
//  Убираем границу диаграммы.
   
Диаграмма.ChartArea.Border.LineStyle = xlLineStyleNone;

   
//  Убираем заполнение диаграммы.
   
Диаграмма.ChartArea.Fill.Visible = msoFalse;

   
//  Копируем картинку в буфер.
   
Shape.CopyPicture();

   
//  Вставляем данные в диаграмму из буфера.
   
Диаграмма.Paste();

   
//  Экспортируем диаграмму в картинку (*.jpg, *.gif, *.bmp, *.png).
   
Успех = Диаграмма.Export(FileName, FilterName);

   
//  Закрываем книгу без сохранения изменений.
   
Книга.Close(False);

    Возврат
Успех;

КонецФункции

 

Во вложении конфигурация с примером использования функции.

См. также

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210139    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150700    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    31888    226    63    

117

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    214897    925    886    

939

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15070    79    0    

60

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101356    296    173    

312
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. letchik2000 31.10.14 14:01 Сейчас в теме
Автору спасибо за публикацию. Сразу видно - специалист.
Нужна помощь по доработке конкретной обработки выгрузки картинок из Excel в 1С 8.2 УТ 10.3.
В целом она работает нормально, однако иногда вылетают ошибки - например картинка привязывается к наименованию или артикулу из соседней строки или вообще не находится. При этом совершенно точно картинка привязана к соответствующей ячейке.
Если есть желание разобраться в этой проблеме и попутно подзаработать на хлебушек - буду рад рассказать о проблеме более подробно
Оставьте свое сообщение