|  20.06.2012, 14:29 | #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(); | 
|  | 
|  20.06.2012, 14:49 | #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. | 
|  | 
|  20.06.2012, 15:22 | #3 | 
| Moderator | Цитата: Помогите сделать действие в Excel через COM - здесь ищутся пути решения | 
|  | |
| За это сообщение автора поблагодарили: Player1 (1). | |
|  22.06.2012, 06:57 | #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('ПОКАЗАТЬ.ДЕТАЛИ(... | 
|  | 
|  22.06.2012, 07:38 | #5 | 
| Участник | |
|  | 
|  22.06.2012, 22:53 | #6 | 
| Moderator | Цитата: 
		
			Сообщение от Player1
			   Всё прочитал, весь день пробовал, так ничиго и не вышло. Сталкнулся со всеми траблами которые возникали у kashperuk. Региональные настройки - понял что мне нужно писать команды по-русски. Код работает в job и не работает в class - да именно так. Не стал бы заморачиваться, но отчет реально гигантский и архиважный). Быть может найдете время рассмотреть мою ситуацию | 
|  | 
|  25.06.2012, 10:29 | #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(); | 
|  | 
|  26.06.2012, 09:32 | #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');
} | 
|  | 
|  26.06.2012, 10:46 | #9 | 
| Участник | 
			
			В джобе да, в классе нет. Ура! это натолкнуло меня на мысль что дальнейший код, после группировки, портит ее. Так и есть, вставил группировку в конце метода - работает. Ну только остался эффект того что все колонки отчета выделены после вывода его на экран, ну да ладно. | 
|  | 
|  26.06.2012, 13:30 | #10 | 
| Moderator | |
|  | |
| За это сообщение автора поблагодарили: NoTimeToCry (1). | |