|  28.05.2004, 15:49 | #1 | 
| Гость |  Excel быстрый вывод 
			
			Вывод целой строкой много обсуждался, но готового рецепта я не нашел. После экспериментов выкладываю работающий вариант (а то не по себе уже стало, что все спрашиваю, а пользы сообществу аксаптеров не приношу). Это для еще более начинающих чем я. PHP код: 
			 | 
|  | 
|  28.05.2004, 17:26 | #2 | 
| Участник | 
			
			спасибо. не возражаете, если я перемещу в раздел проекты? | 
|  | 
|  31.05.2004, 11:01 | #3 | 
| Гость | Ok 
			
			Ok
		 | 
|  | 
|  31.05.2004, 11:50 | #4 | 
| Участник | 
			
			Если передавать в Excel только строковые значения, то можно сразу создать соответствующий массив:  PHP код: 
			 | 
|  | 
|  01.06.2004, 13:10 | #5 | 
| Гость | Буфер обмена 
			
			Пробовал я выводить через буфер обмена, используя примеры с форума. Но в них вывод производится вообще поячеечно, что медленне чем построчно. Или я не те примеры смотрел? Можно в этом обсуждении еще раз описать вывод многострочного range через буфер обмена? | 
|  | 
|  01.06.2004, 15:07 | #6 | 
| Участник | 
			
			Про буфер обмена писали например здесь: http://www.axforum.info/forums/showt...4163#post24163 Но проще делать не через WinAPI, а использую TextBuffer. Если кратко, то алгоритм такой: Формируем текст, в котором значения в строке разделены табами (\t), а строки (\n). Помещаем его в буфер обмена. PHP код: 
			 | 
|  | 
|  01.06.2004, 17:17 | #7 | 
| Гость | Попробовал 
			
			Действительно быстрее и быть не может. А с форматированием разбирались? Я в шаблоне делаю нужное форматирование на первой строке таблицы и на дополнительные строки его переношу копируя и вставляя целую строку. Если выводить построчно это не страшно, т.к. и так процесс формирования не мгновенен, а в свете использования вставки целых range, придется разбираться и с форматированием. Вы в tlb файлах смотрите значения констант и форматы вызова функций Excel? | 
|  | 
|  01.06.2004, 20:57 | #8 | 
| Участник | 
			
			зачем? значения между ячейками разделяются симовлом \t так например PHP код: 
			 | 
|  | 
|  02.06.2004, 12:09 | #9 | 
| Участник | 
			
			В Excel есть замечательный "пишущий плейер". Правда он не всегда генерит правильный код. Если отдебагерить полученный макрос, то можно и значения констант посмотреть...
		 | 
|  | 
|  02.06.2004, 12:43 | #10 | 
| Гость | Нашел ;-) 
			
			Я у себя открыл в Delphi файл Excel9.olb (Excel2000 типа), там есть и константы и методы с описанием параметров. Так что запись макросов + Type Library Editor  - это сила. Будем разбираться дальше ... | 
|  | 
|  02.06.2004, 13:08 | #11 | 
| Участник | 
			
			Информация к размышлению.... только что нашел что: (набросок класса для формирования html в аттаче) excel при вставке из буффера обмена отлично понимает html со всем фолрматированием  <html> <body> <table border=2> <tr bgcolor=#ff0000><td colspan=2><b>Header  </b></td></tr> <tr bgcolor=#c7c7c7><td align=left>col1</td><td align=right>col2</td></tr> </table> </body> </html> | 
|  | 
|  02.06.2004, 13:11 | #12 | 
| Участник | 
			
			сорри в пред сообщении html обработался  это было : PHP код: 
			 | 
|  | 
|  02.06.2004, 13:52 | #13 | 
| Гость | Полезное обсуждение получается 
			
			html форматирование в коде аксапты прикольно наверное смотрится, только трудоемкость выше получается Вот пример как копировать форматирование из range в range: здесь одна строка дублируется CurRow-1 раз вместе со всем форматированием. XLSrange = COMCell.Range('A6:L6'); XLSrangeTo = COMCell.Range('A6:L'+int2str(CurRow-1)); XLSrange.select(); XLSrange.AutoFill(XLSrangeTo,0); Т.е. создаем файл на основе шаблона, в котором одна строка отформатирована как следует и с помощью AutoFill распространяем форматирование на нужный range | 
|  | 
|  02.06.2004, 15:08 | #14 | 
| Участник | 
			
			Согласен.  Но работа с range сильно тормозит а когда надо выводить отчеты с подитогами соответственно разным объединением ячеек по строкам, HTML кажется более предпочтительным вариантом а то что трудоемко это зря вот пример кода PHP код: 
			 | 
|  | 
|  03.06.2004, 12:23 | #15 | 
| Участник | 
			
			В частности для облегчения вывода промежуточных итогов по строкам я сделал класс двумерного массива http://www.axforum.info/forums/showt...&threadid=5263 Файл RTG_2DimArray (который очень не нравится mazzy) Т.е. я предварительно заполняю этот массив, а потом одной командой заполняю весь лист EXCEL через буфер обмена. Потом остается только отформатировать лист, если необходимо. | 
|  |