Извлечение картинки из файла MS Excel

Приведенная функция получает полный путь к книге Excel с картинкой (имя листа с картинкой должно быть "Лист1") и возвращает объект 1С - Картинка. 

 

 

 


Функция ИзвлечьКартинкуИзXLS(ФайлXLS)

ИмяВременногоФайлаКартинки = КаталогВременныхФайлов() +"tempPict.gif";

// для открытия документа
Док = Новый COMОбъект("Excel.Application");
Док.DisplayAlerts = False;

// для промежуточного хранения картинки
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = False; //Закрытие не должно вызывать диалога сохранения

Попытка
Док.Workbooks.Open(ФайлXLS);
Исключение
Сообщить("Не удалось открыть файл!");
Возврат Неопределено;
КонецПопытки;

//Извлечение картинки
Если Док.Sheets("Лист1").Pictures.Count() > 0 Тогда

//Ссылка на картинку
Картинка = Док.Sheets("Лист1").Pictures(1);

// промежуточная книга для хранения диаграммы - контейнера картинки
Excel.Application.Workbooks.Add(1);
ИмяЛистаXLS = Excel.ActiveSheet.Name;

//Создание диаграммы, которая будет являться контейнером для картинки
//Расположение новой диаграммы - как объект на созданном ранее новом листе, являющемся в данный момент активным
//Размеры диаграммы слегка превышают размер картинки
ДиаграммаXLS = Excel.ActiveSheet.ChartObjects().Add(0, 0, Картинка.Width * 1.01, Картинка.Height * 1.01);

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

//Заполняем диаграмму картинкой из буфера
ДиаграммаXLS.Chart.Paste();

//Сохраняем диаграмму во временном файле
ДиаграммаXLS.Chart.Export(ИмяВременногоФайлаКартинки);

ДиаграммаXLS = Неопределено;

//Загружаем картинку из временного файла в объект Картинка
КартинкаОбъект = Новый Картинка(ИмяВременногоФайлаКартинки);

//Удаляем временный файл
Попытка
УдалитьФайлы(ИмяВременногоФайлаКартинки);
Исключение
КонецПопытки;

КонецЕсли;

//Док.Application.Quit();
Док.Workbooks.Close();

//Книгу, использовавшуюся для импорта картинок закрываем
Попытка
Excel.Application.Quit();
Док.Application.Quit();
Исключение
КонецПопытки;

Возврат КартинкаОбъект;

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

&НаКлиенте
Процедура Пуск(Команда)

ФайлXLS = "C:Книга2.xlsx";
КартинкаОбъект = ИзвлечьКартинкуИзXLS(ФайлXLS);

КонецПроцедуры

 

Рейтинг@Mail.ru