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). |