AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.10.2008, 17:42   #1  
Zlojbarsuk is offline
Zlojbarsuk
Участник
 
26 / 12 (1) ++
Регистрация: 08.08.2007
Быстрый способ вывода данных в Excel с картинками
Здравствуйте!
Есть необходимость ускорить вывод данных в Excel. Отчёт содержит картинки.
Перечитал много тем на форуме, касающихся вывода данных в Excel. Сделал вариант через SpreadSheets. Работает на порядок быстрее. Но этот способ, к сожалению, не позволяет выводить картинки.
Быть может кто-нибудь подскажет быстрый способ вывода данных в Excel с картинками? :-)
Старый 23.10.2008, 17:48   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
я реализовывал вот так, через класс 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);
    }
excel - это объект приложения Excel с которым работаем.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.10.2008, 17:50   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
забыла написать, поле Image, во временной табличке куда я собирал картинки, типа Container.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.10.2008, 17:54   #4  
Zlojbarsuk is offline
Zlojbarsuk
Участник
 
26 / 12 (1) ++
Регистрация: 08.08.2007
я делаю вывод картинки аналогичным образом... но нужно ускорить этот процесс(желание не моё)...
Сейчас скорость такая: 400 строк выводятся за 1,5 минуты...
Старый 23.10.2008, 17:59   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Zlojbarsuk Посмотреть сообщение
я делаю вывод картинки аналогичным образом... но нужно ускорить этот процесс(желание не моё)...
Сейчас скорость такая: 400 строк выводятся за 1,5 минуты...
Странно, у меня намного быстрее, с учетом того что картинки выводятся в отчет, у которого более 50 столбцов секунд 15-20. Класс выполняется на клиенте.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.10.2008, 18:43   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
visible(true) для Excel, конечно, в самом конце делаете? Если нет, то сделайте в самом конце.

Еще можно для Excel перед циклом поставить Application.ScreenUpdating(false), а после - Application.ScreenUpdating(true). Даже при visible = false это дает некоторую экономию по времени.
Старый 23.10.2008, 18:51   #7  
Zlojbarsuk is offline
Zlojbarsuk
Участник
 
26 / 12 (1) ++
Регистрация: 08.08.2007
приложение делаю видимым по окончании выгрузки...
Старый 23.10.2008, 17:54   #8  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вот инициализация временной таблицы, вытаскивал картинку из файла:
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();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Импорт данных в журнал ГК из Excel Toshk DAX: Функционал 6 23.10.2008 13:46
Excel, группировки: как программно изменить расположение итоговых данных? CDan DAX: Программирование 5 29.08.2008 18:14
Импорт данных из шаблона Excel farlander DAX: Функционал 4 23.11.2006 11:43
Какой способ для связи Axapta с Excel вы предпочитаете? Gustav DAX: База знаний и проекты 37 09.06.2006 09:02
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:07.