|  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. Кроме того, обычный отчет можно использовать и просто как отчет  | 
|  |