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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.09.2005, 18:54   #1  
Jackal1 is offline
Jackal1
Участник
 
54 / 10 (1) +
Регистрация: 29.07.2005
Адрес: Киев
Вот сформировал отчетик в Excel на 4 тысячи строчек и ушло на это минут 15.
Причем основное время занял перенос данных и таблички ExcelBufer в Excel.

А нельзя ли киким то образом ускорить этот процесс??.
Можно ли обратится к екселю не через Automation а каким либо другим способом??
Может работа через C/ODBC будет быстрее?

Подскажите плиз, что делать.
Старый 01.09.2005, 19:14   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
вставьте из буфера обмена диапазон целиком.
для этого подготовьте текст правильно. Так, чтобы он соответствовал раскладке в диапазоне.

вы потеряете возможность управлять раскраской и оформлением, зато скорость будет хорошая.
__________________
полезное на axForum, github, vk, coub.
Старый 02.09.2005, 09:53   #3  
Jackal1 is offline
Jackal1
Участник
 
54 / 10 (1) +
Регистрация: 29.07.2005
Адрес: Киев
Спасибо mazzy!

Вот только каким образом можно вставить диапазон?
Насколько я понимаю нужно сначала выделить область в Excel (это не проблема), а потом присвоить ей МАССИВ значений.

Только вот с присваиванием массива у меня что то не получается.

Если можно выложите пример где это реализовано или дайте ссылочку на описание этой задачки
Старый 02.09.2005, 10:02   #4  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
1. таблица ExcelBufer должна быть обязательно Temporary
2. скорость вывода сильно зависит от клиента, особенно сильно нужны память и проц. На какой машине вы работаете с репортом, и на какой машине будет работать пользователь?
Старый 02.09.2005, 10:19   #5  
Jackal1 is offline
Jackal1
Участник
 
54 / 10 (1) +
Регистрация: 29.07.2005
Адрес: Киев
таблица ExcelBufer темповая.
Машина: пень 2.4 512 оперативы.

Но не зависимо от машины ввод "диапазонов" будет происходить на порядок быстрее, вот только как его реализовать!!!???
Старый 02.09.2005, 12:24   #6  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
Ща быренько накропал репортик, который выводит 4000 строк по 10 колонок в ехель - да, очень медленно через буферную таблицу.
Сделал то же самое через Automation-переменную - вышло <4мин. на Cel2400+512Мб

<div class='CALtop'>C/AL</div><div class='CAL'>//Сделал переменные Automation
xlApplication, xlWorkBook, xlWorkSheet

//Затем
CREATE(xlApplication)
xlApplication.Workbooks.Add;
xlWorkBook.Worksheets.Add;

//и понеслась Y(1..4000), x(1..10)
xlWorkSheet.Range(X+FORMAT(Y)).Value := Value

//в конце
xlApplication.Visible(TRUE);
xlApplication.UserControl(TRUE);</div>
Старый 02.09.2005, 13:32   #7  
johndoe is offline
johndoe
Участник
 
88 / 10 (1) +
Регистрация: 15.10.2004
Адрес: Москва
Post
Цитата:
Сообщение от SVG
Ща быренько накропал репортик, который выводит 4000 строк по 10 колонок в ехель - да, очень медленно через буферную таблицу.
Сделал то же самое через Automation-переменную - вышло <4мин. на Cel2400+512Мб
Присоединяюсь. Двумя руками Когда-то для выгрузки в Excel использовал собственный codeunit, который работал с напрямую, через Automation. Там было все - и собственно экспорт, и форматирование. И все это работало потрясающе шустро.

Сейчас же вынужден использовать Excel Buffer и его функции. По сути они делают то же самое, но куда-а-а медленнее... С таймером не засекал, да и база совсем другая , но ощущение "неторопливости" стандартного функционала не покидает меня и поныне.

Спасибо SVG за подтверждение моих слов.

P.S. Осталось понять, почему почти одни и те же вызовы OLE-методов Excel работают так по-разному. Конечно, причина на стороне Navision. Видимо, много избыточных вызовов + работа с таблицей (естественно, временной) + время на передачу параметров функций в самом C/AL...
Старый 02.09.2005, 14:19   #8  
Jackal1 is offline
Jackal1
Участник
 
54 / 10 (1) +
Регистрация: 29.07.2005
Адрес: Киев
Спасибо за помощь.
В общем стало ясно что от работы с Excel Bufer лучше воздержатся.

Но вот одного я так и не понял, можно ли как писал mazzy присваивать значения не ячейке а целому диапазону. Я думаю это существенно ускорило бы работу.
Старый 02.09.2005, 14:31   #9  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
Цитата:
Сообщение от mazzy
вставьте из буфера обмена диапазон целиком.
Ключевое слово "буфер обмена"
Надо сделать текст, потом загнать его в буфер и буфер вставить в ехель.
Если я правильно понял канешна.

Но тут есть подставы -
1. с буфером навижн не работает, разве что через OCX
2. сформировать строку чтоб скормить ее ехелю -
3. запихать много текста в буфер - строка в нави не больше 1024 - едва ли на одну строчку хватит, разве что тот самый OCX умеет "приклеивать" к буферу новые значения...

так что вперед на автомейшен
Старый 02.09.2005, 14:44   #10  
Jackal1 is offline
Jackal1
Участник
 
54 / 10 (1) +
Регистрация: 29.07.2005
Адрес: Киев
Все ясно. Тогда действительно выход один - "Вперед на автомейшн"
Старый 02.09.2005, 14:56   #11  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Цитата:
Сообщение от Jackal
Спасибо за помощь.
В общем стало ясно что от работы с Excel Bufer лучше воздержатся.

Эту таблицу удобно использовать при импорте данных, вызывая функции, которые там опредлены. А при печати отчета логично использовать, как говорил SVG, непосредственный вывод. Быстрее, форматировать удобно и т.д. и т.п.
__________________
MBS Certified Master in Navision Developer
Старый 05.09.2005, 12:43   #12  
anatoliy is offline
anatoliy
Участник
 
107 / 10 (1) +
Регистрация: 08.06.2004
предлагаю через CSV файл.

http://www.mibuso.com/forum/viewtopic.php?...1&highlight=csv

работает бестрее всех опробованных мной способов.
Старый 05.09.2005, 13:01   #13  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Если доработать ExcelBuffer и использовать функцию Excel'а TextToColumns (принадлежит классу Range), то скорость экспорта можно повысить на порядок.

Выгрузка 10000 строк (8 столбцов) занимает около 35 секунд.
Старый 14.12.2006, 11:54   #14  
Максим_imported is offline
Максим_imported
Участник
 
2 / 10 (1) +
Регистрация: 14.12.2006
Есть какой нибудь пример выгрузки в эксель с использованием TextToColumns, у меня ни че не получается
Старый 14.12.2006, 12:20   #15  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Еще вариант существенно ускорить выгрузку отчета в Excel, и ExcelBuffer у дел:
Реактивный Excel
Старый 14.12.2006, 13:24   #16  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
я делал - выгружал во временный текстовый файл все данные а потом разом открывал их в Excel
Старый 14.12.2006, 14:34   #17  
satir is offline
satir
Участник
Аватар для satir
 
77 / 10 (1) +
Регистрация: 09.06.2006
Не знаю пробовал-ли кто использовать XSL+XML. Работает просто чудо . Основное время - формирование данных для вывода в XML, а само отображение работает мгновенно. На тысячах не пробовал, а 600 записей выводит на раз. К тому же форматирование вывода можно менять
Старый 15.12.2006, 14:01   #18  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
Цитата:
Сообщение от satir Посмотреть сообщение
Не знаю пробовал-ли кто использовать XSL+XML. Работает просто чудо . Основное время - формирование данных для вывода в XML, а само отображение работает мгновенно. На тысячах не пробовал, а 600 записей выводит на раз. К тому же форматирование вывода можно менять
Абсолютно верно. Хотел написать, что, в особенности с выходом 2007 офиса, Работать через XML гораздо удобнее. С учетом того, что любое форматирование можно воспроизвести с помощью XML, а также скоростью работы записи напрямую файл и открытия в экселе.
Старый 27.12.2006, 12:53   #19  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
Отказался от XML потомучто не поддерживает группировку.
Перешел на HTML и всё заработало.
Есть спец. кодеюнит.
 


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

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

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