Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Экспорт изображений в Excel

Экспорт изображений в Excel
Я
   Вельможа
 
09.04.19 - 17:11
Здравствуйте!
Ситуация. УТ 11.4 УФ. Выгружаю данные в Excel-файл внешней обработкой. Алгоритм действий такой:
  - Пользователь в форме обработки выбрал, что хочет отправить в Excel,
  - на сервере запросом получаю всю нужную информацию, включая картинки товаров, то есть, изображения номенклатуры. Картинки получаю в виде двоичных данных так: СтрокаТЗ.Фото = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Выборка.Номенклатура.ФайлКартинки); Все результаты запроса пихаю в таблицу значений,
  - таблицу значений с результатами запроса (некоторые поля номенклатуры, включая фото) возвращаю на клиент в виде массива структур с именем Товары,
  - на клиенте уже перебором всех элементов массива все сохраняю в файл Excel через COMОбъект("Excel.Application"), в том числе и изображения.
Вот тут подробнее. Изображение сначала из двоичного вида сохраняю в файл на диск Товары[Счетчик].Фото.Записать("C:\filename.jpg"); (Фото - ключ структуры, в котором лежат двоичные данные изображения)
Потом этот сохраненный файл пихаю в Excel Лист.Shapes.AddPicture("C:\filenamee.jpg", 0, 1, -1, -1, -1, -1).Select();
Там попутно навожу нормальный вид и все такое.
Ну и потом удаляю этот файл изображения с диска.
И вот на это немало времени уходит, на сохранение на диск, потом на удаление.
Можно ли как-то сразу пихать изображение в Excel, не прибегая к сохранению на диск в виде файла?
Может, не в виде бинарных данных вообще нужно получать файл, а в каком ином виде для этого?
Хотелось бы более оперативно получать результат, поэтому и пытаюсь добавлять изображения в Excel без сохранения их на диск.
 
 
   dezss
 
1 - 09.04.19 - 17:16
А почему не используешь ТабличныйДокумент?
Его можно в xls, xlsx сохранять?
   Вельможа
 
2 - 09.04.19 - 17:20
(1), вообще, потому что изначально есть обработка для обычных форм, которая работает именно так. А так как контора переходит на УТ11 с УТ10, то пока самый простой путь - это переписать все старые обработки под УФ.
Хотя вариант с  ТабличнымДокументом тоже можно рассмотреть. А в нем можно делать плюсики/минусики как в Excel для разворачивания/сворачивания? На манер того, как в конфигураторе можно процедуры и функции сворачивать?
   sqr4
 
3 - 09.04.19 - 17:33
(2) НАчатьАвтогруппировкуСтрок
   sqr4
 
4 - 09.04.19 - 17:33
Но можно много багов наловить в момент сохранения ТД в эксель.
   Вафель
 
5 - 09.04.19 - 17:49
(2) делай у файло временное имя через ПолучитьИмяВременногоФайла.
1с сама потом все удалит
   Вельможа
 
6 - 09.04.19 - 17:54
(5), удаление файла - не основная трата времени. Основное время тратится на сохранение файла изображения на диск.
   sqr4
 
7 - 09.04.19 - 17:55
(6) можно пересмотреть вариант хранения файлов не в базе, а на диске
   Вельможа
 
8 - 09.04.19 - 18:02
(7), как совсем альтернативный вариант. Ну, можно. Хотя, думаю, более целесообразней попробовать все переписать на работу с ТабличнымДокументом.
   Вельможа
 
9 - 09.04.19 - 18:03
Сейчас проверил. Без сохранения картинок на диск (и стало быть без их экспорта в excel) в 2,5 раза быстрей все работает.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.