20.01.2004, 09:31 | #1 |
1C
|
Скорость работы при экспорте в Excel
Программно осуществляется выгрузка данных в Excel шаблоны. Но работает это ужасно медленно. Отчет в 200 строк и 15 столбцов на машине P-4 2,4Ghz формируется 2 минуты, тот же отчет на P-4 1,4 Ghz уже 4 минут, ну а на Celeron 1700 вообще ждали 25 минут и так не дождались. После анализа выяснили, что завал происходит именно в момент работы с ячейками Excel. Хотелось бы узнать, это нормально или есть средства для ускорения сего процесса.
|
|
20.01.2004, 10:19 | #2 |
Участник
|
Как я понимаю, интересует оптимизация передачи данных из Аксапта в Excel через com. Можно попробовать заполнять шаблон построчно, сформировав вариантный массив значений строки и передав его в выбранный range.
http://www.axforum.info/forums/showt...0481#post10481 p.s. К сожалению, многомерные массивы в Axapta не поддерживаются. А вообще, на форуме довольно много всего обсуждалось относительно общения с Excel. Воспользуйтесь поиском. |
|
20.01.2004, 10:55 | #3 |
Moderator
|
Самый оптимальный способ выгрузки данных в Excel -- делать это через com
Можно использовать для этого компоненту VTKExport для Delphi. Скорость выгрузки на Celeron 600 128 RAM около 1000 ячеек в секунду (с форматированием ячеек) Правда есть один минус -- компонента платная, но стоит не много... |
|
20.01.2004, 11:14 | #4 |
Гость
|
все можно сделать, не покупая доп объектов
Формируйте XML-файл с необходимыми строками. Затем вызывается COM-объект Excel и с помощью него открывается (open) вышеук файл.
PS. Внимание! значения атрибутов XML-элементов Excel автоматически присваивает своим колонкам в порядке возрастания кодов символов наименований атрибутов. Именуйте атрибуты в порядке возрастания по афавиту! - (порядок алфавита = порядок Excel колонок слева направо). |
|
20.01.2004, 11:21 | #5 |
1C
|
kvan, вариант с VTKExport интересен. А вообще Вы использовали эту библиотечку в Аксапте???
|
|
20.01.2004, 11:21 | #6 |
Участник
|
не согласен.
самый оптимальный способ выгрузки, имхо, напечатать отчет в текстовый файл, а затем импортировать его в Эксель. Причем оптимальный с точки зрения времени исполнения, так и с точки зрения работы программиста. Сделать обычный отчет программисту намного легче, чем трахаться с COM. Кроме того, обычный отчет можно использовать и просто как отчет |
|
20.01.2004, 11:24 | #7 |
1C
|
Цитата:
напечатать отчет в текстовый файл, а затем импортировать его в Эксель.
|
|
20.01.2004, 11:38 | #8 |
Гость
|
При варианте с COM и промежут файлом (текстовым или XML) бухгалтера ничего не увидят, по нажатию кн откроется Excel.
Двойное кодир (действие) - не есть гуд. Использование Excel при наличии средств форм отчетов в AX = двойное кодирование (действие) |
|
20.01.2004, 11:43 | #9 |
Moderator
|
2 YVAS:
Библиотечку использовали. Когда встал вопрос о медленном экспорте данных в Excel, мы посоветовались с программистами из другого отдела (они не работают с аксаптой), у них возникала такая проблема и они ее решили с помощью VTKExport. Подготовить компоненту для работы с ней из аксапты делов на час. Правда пока мы ее не используем по причине запрета от руководства и отказа заплатить (компонента то платная) 2mazzy: я имел ввиду самый оптимальный способ прямой выгрузки данных Axapta -> Excel, самый оптимальный из доступных нам на то время. |
|
20.01.2004, 11:45 | #10 |
1C
|
Цитата:
Использование Excel при наличии средств форм отчетов в AX = двойное кодирование (действие)
|
|
20.01.2004, 11:56 | #11 |
NavAx
|
Решение тут http://www.axforum.info/forums/showt...4163#post24163
Я попробовал, разница в разы. |
|
20.01.2004, 11:57 | #12 |
Гость
|
-уже есть средство
-на стыках возможны (и как правило, случаются) потери = доп программирование и доп (иногда покуп) объекты -необходимо инсталлировать (по-хорошему и покупать) Excel везде, где исп AX -нет гарантии, что след версии AX и EXCEL будут автоматом работать в связке как работали ранее |
|
20.01.2004, 12:30 | #13 |
Участник
|
Цитата:
Изначально опубликовано YVAS
интресно будет это объяснять бухгалтерам. А вообще, чтобы посмотреть отчет и делать для этого двойное действие - это ненормально. |
|
20.01.2004, 13:37 | #14 |
1C
|
2Mazzy:
С выгрузкой в текст понятно, а вот импорт в Excel, я так понимаю, макрос экселевский нужно запускать из Ax? Что то немного недопонимаю... |
|
20.01.2004, 13:53 | #15 |
Участник
|
да, правильно.
главное, через COM надо вызывать одну-две уже готовые и существующие функции, вместо того, чтобы программировать все действия "с нуля". |
|
20.01.2004, 14:19 | #16 |
NavAx
|
2 YVAS
А чем такой вариант не нравится? http://www.axforum.info/forums/showt...4163#post24163 ИМХО самый быстрый, т.к. не надо ни каких файловых операций. Заполняешь буфер обмена и делаешь вставку в Excel. Есть не достатки с дизайном листа, но если сравнивать с импортом из тестового файла... |
|
27.02.2004, 11:55 | #17 |
Участник
|
Случилось чудо!
Мне дама подсказала решение под 2К - нужно делать не просто вставку, а специальную. "Только текст". В макросе VBA это выглядит Цитата:
ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:= False
|
|
06.04.2010, 14:25 | #18 |
Постигающий
|
Цитата:
Сообщение от mazzy
не согласен.
самый оптимальный способ выгрузки, имхо, напечатать отчет в текстовый файл, а затем импортировать его в Эксель. Причем оптимальный с точки зрения времени исполнения, так и с точки зрения работы программиста. Сделать обычный отчет программисту намного легче, чем трахаться с COM. Кроме того, обычный отчет можно использовать и просто как отчет |
|