| 
			
			 | 
		#1 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Вывод целой строкой много обсуждался, но готового рецепта я не нашел. 
		
		
		
		
		
		
		
	После экспериментов выкладываю работающий вариант (а то не по себе уже стало, что все спрашиваю, а пользы сообществу аксаптеров не приношу). Это для еще более начинающих чем я. PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			спасибо. 
		
		
		
		
		
		
		
	не возражаете, если я перемещу в раздел проекты?  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Ok
			 
			
			Ok
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если передавать в Excel только строковые значения, то можно сразу создать соответствующий массив:  
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Буфер обмена
			 
			
			Пробовал я выводить через буфер обмена, используя примеры с форума. 
		
		
		
		
		
		
		
	Но в них вывод производится вообще поячеечно, что медленне чем построчно. Или я не те примеры смотрел? Можно в этом обсуждении еще раз описать вывод многострочного range через буфер обмена?  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Про буфер обмена писали например здесь: 
		
		
		
		
		
		
		
	http://www.axforum.info/forums/showt...4163#post24163 Но проще делать не через WinAPI, а использую TextBuffer. Если кратко, то алгоритм такой: Формируем текст, в котором значения в строке разделены табами (\t), а строки (\n). Помещаем его в буфер обмена. PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Попробовал
			 
			
			Действительно быстрее и быть не может. 
		
		
		
		
		
		
		
	А с форматированием разбирались? Я в шаблоне делаю нужное форматирование на первой строке таблицы и на дополнительные строки его переношу копируя и вставляя целую строку. Если выводить построчно это не страшно, т.к. и так процесс формирования не мгновенен, а в свете использования вставки целых range, придется разбираться и с форматированием. Вы в tlb файлах смотрите значения констант и форматы вызова функций Excel?  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			зачем? 
		
		
		
		
		
		
		
	значения между ячейками разделяются симовлом \t так например PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В Excel есть замечательный "пишущий плейер". Правда он не всегда генерит правильный код. Если отдебагерить полученный макрос, то можно и значения констант посмотреть...
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Нашел ;-)
			 
			
			Я у себя открыл в Delphi файл Excel9.olb (Excel2000 типа), там есть и константы и методы с описанием параметров. Так что запись макросов + Type Library Editor  - это сила. 
		
		
		
		
		
		
		
	Будем разбираться дальше ...  | 
| 
	
 | 
| 
			
			 | 
		#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>  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			сорри в пред сообщении html обработался  
		
		
		
		
		
		
		
	это было : PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#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  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Согласен.  
		
		
		
		
		
		
		
	Но работа с range сильно тормозит а когда надо выводить отчеты с подитогами соответственно разным объединением ячеек по строкам, HTML кажется более предпочтительным вариантом а то что трудоемко это зря вот пример кода PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В частности для облегчения вывода промежуточных итогов по строкам я сделал класс двумерного массива 
		
		
		
		
		
		
		
	http://www.axforum.info/forums/showt...&threadid=5263 Файл RTG_2DimArray (который очень не нравится mazzy) Т.е. я предварительно заполняю этот массив, а потом одной командой заполняю весь лист EXCEL через буфер обмена. Потом остается только отформатировать лист, если необходимо.  | 
| 
	
 |