|
|
|
|
#1 |
|
Участник
|
Быстрый способ вывода данных в Excel с картинками
Здравствуйте!
Есть необходимость ускорить вывод данных в Excel. Отчёт содержит картинки. Перечитал много тем на форуме, касающихся вывода данных в Excel. Сделал вариант через SpreadSheets. Работает на порядок быстрее. Но этот способ, к сожалению, не позволяет выводить картинки. Быть может кто-нибудь подскажет быстрый способ вывода данных в Excel с картинками? :-) |
|
|
|
|
#2 |
|
Ищущий знания...
|
я реализовывал вот так, через класс Image:
X++: Image Image;
COM comWorksheet;
COM comShapes;
COM Range;
;
while select tmpTableForImage
{
Image = new Image();
Image.setData(tmpTableForImage.Image);
Image.resize(130,100,3);
comWorksheet = excel.ActiveSheet();
comShapes = comWorkSheet.shapes();
Range = excel.Range(tmpTableForImage.NumRow, tmpTableForImage.NumCol);
Range.select();
Image.clipboardCopy();
excel.WorkSheetCur().pasteSpecial(0);
excel.Range(tmpTableForImage.NumRow, tmpTableForImage.NumCol).select();
excel.Selection().RowHeight(78);
}
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#3 |
|
Ищущий знания...
|
забыла написать, поле Image, во временной табличке куда я собирал картинки, типа Container.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#4 |
|
Участник
|
я делаю вывод картинки аналогичным образом... но нужно ускорить этот процесс(желание не моё)...
Сейчас скорость такая: 400 строк выводятся за 1,5 минуты... |
|
|
|
|
#5 |
|
Ищущий знания...
|
Цитата:
секунд 15-20. Класс выполняется на клиенте.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#6 |
|
Moderator
|
visible(true) для Excel, конечно, в самом конце делаете? Если нет, то сделайте в самом конце.
Еще можно для Excel перед циклом поставить Application.ScreenUpdating(false), а после - Application.ScreenUpdating(true). Даже при visible = false это дает некоторую экономию по времени. |
|
|
|
|
#7 |
|
Участник
|
приложение делаю видимым по окончании выгрузки...
|
|
|
|
|
#8 |
|
Ищущий знания...
|
вот инициализация временной таблицы, вытаскивал картинку из файла:
X++: FilePath pathFileLoc;// путь к файлу Bindata binData; ; binData = new BinData(); tmpTableForImage.clear(); tmpTableForImage.NumCol = colPict;// столбец для вставки tmpTableForImage.NumRow = startRow + lineNum - 1; // строка для вставки if (binData.loadFile(pathFileLoc)) tmpTableForImage.Image = binData.getData(); tmpTableForImage.insert();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
|