| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			ComExcelDocument_RU доработка и вопрос
			 
			
			1. доработка =) 
		
		
		
		
		
		
		
	X++: comRange = excel.findRange(ComExcelDocument_RU::numToNameCell(1, 1) + ":" +
                           ComExcelDocument_RU::numToNameCell(3, 10), 1);X++: szRet += int2str(_iRow); X++:     if (_iRow != 0)
    szRet += int2str(_iRow);2. вопрос: использовал конструкцию выше и группировку (линейка для сворачивания\разворачивания) X++: comRange = excel.findRange(ComExcelDocument_RU::numToNameCell(1, 1) + ":" + ComExcelDocument_RU::numToNameCell(3, 10), 1); comRange.Group();  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			в свое время делал группировку строк, и сворачивал вот так: 
		
		
		
		
		
		
			X++: void groupRows() { COM cmdBars, cmdBar, ctrls, ctrl; ; cmdBars = excel.CommandBars(); cmdBar = cmdBars.Item('PivotTable'); ctrls = cmdBar.Controls(); ctrl = ctrls.Item( 5 ); ctrl.Execute(); } P.S. естественно выполняется это на выделенном диапозоне (range.select), который был сгруппирован. 
				__________________ 
		
		
		
		
		
			"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 20.06.2012 в 15:06.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Помогите сделать действие в Excel через COM - здесь ищутся пути решения  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Player1 (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Gustav
			 
 
			Выгрузка данных в Excel и их группировка... - здесь говорится о проблеме выполнения такого действия "в лоб" 
		
	Помогите сделать действие в Excel через COM - здесь ищутся пути решения Сталкнулся со всеми траблами которые возникали у kashperuk. Региональные настройки - понял что мне нужно писать команды по-русски. Код работает в job и не работает в class - да именно так. Не стал бы заморачиваться, но отчет реально гигантский и архиважный). Быть может найдете время рассмотреть мою ситуацию X++:     COMExcelDocument_RU     excel;
    Com                     comRange, document, workSheets, exAppl, worksheet1;
;
        excel = new COMExcelDocument_RU();
        excel.newFile('', true);
    document    = excel.getComDocument();
    workSheets  = document.worksheets();
    exAppl      = document.Application();
    workSheet1  = workSheets.item(1);
    //группировка колонок 
    comRange = excel.findRange(ComExcelDocument_RU::numToNameCell(5, 0) + ":" +
                               ComExcelDocument_RU::numToNameCell(10, 0), 1);
    comRange.Group();X++: .ExecuteExcel4Macro(strfmt('ПОКАЗАТЬ.ДЕТАЛИ(... | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Player1
			 
 
			Всё прочитал, весь день пробовал, так ничиго и не вышло. 
		
	Сталкнулся со всеми траблами которые возникали у kashperuk. Региональные настройки - понял что мне нужно писать команды по-русски. Код работает в job и не работает в class - да именно так. Не стал бы заморачиваться, но отчет реально гигантский и архиважный). Быть может найдете время рассмотреть мою ситуацию  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробовал, со строками все получается, а с колонками (интерпретировал код под свои переменные): 
		
		
		
		
		
		
		
	X++: COMExcelDocument_RU     excel;    
    document    = excel.getComDocument();
    workSheets  = document.worksheets();
    exAppl      = document.Application();
    workSheet1  = workSheets.item(1);
    com    Columns, currColumns;
;
columns = workSheet1.columns();
    currColumns = COM::createFromVariant(columns.Item('A:C'));
    currColumns.Select();
    currColumns.Group();
    cmdBars = exAppl.CommandBars();
    cmdBar  = cmdBars.Item('PivotTable');
    ctrls   = cmdBar.Controls();
    ctrl    = ctrls.Item( 5 );
    ctrl.Execute(); | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: {
    COMExcelDocument_RU excel = new COMExcelDocument_RU();
    COM document;
    COM workSheets;
    COM exAppl;
    COM workSheet1;
    COM columns, currColumns, rng;
    COM cmdBars, cmdBar, ctrls, ctrl;
;
    excel.newFile('', true);
    document    = excel.getComDocument();
    workSheets  = document.worksheets();
    exAppl      = document.Application();
    workSheet1  = workSheets.item(1);
    columns = workSheet1.columns();
    currColumns = COM::createFromVariant(columns.Item('A:C'));
    currColumns.Select();
    currColumns.Group();
    cmdBars = exAppl.CommandBars();
    cmdBar  = cmdBars.Item('PivotTable');
    ctrls   = cmdBar.Controls();
    ctrl    = ctrls.Item( 5 );
    ctrl.Execute();
    rng = exAppl.Range('A1:AC10');
    rng.Value2('bla-bla-bla');
} | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В джобе да, в классе нет. 
		
		
		
		
		
		
		
	Ура! это натолкнуло меня на мысль что дальнейший код, после группировки, портит ее. Так и есть, вставил группировку в конце метода - работает. Ну только остался эффект того что все колонки отчета выделены после вывода его на экран, ну да ладно.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Moderator 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: NoTimeToCry (1). | |