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

27.05.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ExportPicturesFromExcel.cf
.cf 11,64Kb
35
35 Скачать (1 SM) Купить за 1 850 руб.

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

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


Немного об объектной модели 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! 20%

Загрузка и выгрузка в 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С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

6000 5100 руб.

09.11.2016    234287    1062    898    

1003

Загрузка и выгрузка в 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 дней БЕСПЛАТНОГО пользования!

2400 руб.

12.08.2021    35511    348    68    

155

SALE! 30%

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    107045    313    173    

326

Загрузка и выгрузка в 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 1С:Розница 3.0 Платные (руб)

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

15600 руб.

20.11.2015    156115    376    378    

513

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

Загрузка данных отчета о реализации и продаже товаров из сервиса Яндекс.Маркета «Беру» в 1С из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ «Отчет комиссионера о продажах».

4800 руб.

09.12.2020    25356    252    1    

114

SALE! 15%

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

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

11100 9435 руб.

29.10.2014    216774    657    527    

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