![]() |
#1 |
Участник
|
Свертка строк при выводе из Аксапты в Excel
Коллеги, подскажите, как при выводе из Аксапты в Excel какой-либо иерархически организованной информации запрограммировать "свертку" строк по группам, так как показано на рисунке во вложении?
|
|
![]() |
#2 |
Участник
|
открываем эксель, включаем запись макроса, групируем, отключаем запись макроса, получаем
PHP код:
Последний раз редактировалось mit; 20.02.2006 в 10:40. |
|
![]() |
#3 |
Участник
|
Как вариант.
В конце каждой строки в отдельную колонку, добавляем некую служебную информацию (пусть это будет 1, 2, 3 и т.д.). Т.е. для строк родительской группы значение 1, для подгруппы значение два и т.д. Далее в шаблоне Excel пишем макрос желательно с параметром на входе (номер колонки для служебной информации) который группирует строки по заданному алгоритму. Далее этим же макросом удаляем служебную информацию. Вот и все. У этого варианта есть одно преимущество, один раз написанный макрос можно использовать в других шаблонах. |
|
![]() |
#4 |
Участник
|
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте. у меня например все итоги расчитываются по формулам (в эксель свтавляется не значение а именно формула) тоже саое, запомнить как сделать группировку не просто, а очень просто |
|
![]() |
#5 |
Участник
|
На счет сложно, не думаю. Макрос сам по себе не очень сложный. А запустить его вообще одна строка.
На счет формул, а если отчет с подитогами и нужно получить потом итоговую строку и именно формулой в ёскеле, а подитоговых строк ну к примеру 100 тогда как? Я к тому что у меня была проблема с передачей в Excel по-моему 256 символов. |
|
![]() |
#6 |
Участник
|
Ну и на счет прототипа пожалуй...
Допустим 3-х уровневое вложение групп. С третьим уровнем все просто, а вот со вторым и первым, получается для выделения строк, нужно запоминать строки начала вышестоящих групп? |
|
![]() |
#7 |
Участник
|
Возможно Вы правы, с подобной проблемой не сталкивался. 100 подитогов наверное много, но не критично. думаю можно будет обойти. наличие шаблонов усложняет администрирование системы. предпочитаю обходиться без них. у каждого свои предпочтения.
группы, подгруппы тоже решается, контейнеры никто не отменял. ![]() думаю дальнейший спор чей алгоритм лучше бессмысленнен цель предложить решение, чем больше решений, тем лучше автор вопроса сам выберет Последний раз редактировалось mit; 20.02.2006 в 12:12. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от mit
100 подитогов наверное много, но не критично. думаю можно будет обойти.
Цитата:
Сообщение от mit
у каждого свои предпочтения
|
|
![]() |
#9 |
Пенсионер
|
Цитата:
Сообщение от mit
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте.... У группировки есть один недостаток, насколько я помню уровней вложенности может быть только 8. Я например ваял отчет используя вкладки и ссылки на вкладки как элементы вложенности...
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
![]() |
#10 |
Участник
|
![]() Цитата:
Сообщение от mit
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте. у меня например все итоги расчитываются по формулам (в эксель свтавляется не значение а именно формула) тоже саое, запомнить как сделать группировку не просто, а очень просто |
|
![]() |
#11 |
NavAx
|
Цитата:
Сообщение от Hans
Как экспортировать формулу в Ексель из Аксапты? Допустим у меня с B1 по W1 имеются значения, а как в А1 поставить формулу?
|
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от raz
Текстом - "=СУММ(...)"
Иногда в одной компании работают на русской и английской версии ![]() Последний раз редактировалось KMV; 21.02.2006 в 12:04. |
|
![]() |
#13 |
Участник
|
Код: ComExcelDocument_Ru _excel Com range; ; range = _excel.findRange(ComExcelDocument_RU::numToNameCell(_i,_j)); _excel.insertValueInRange(range, _txt); range - ячейка |
|
![]() |
#14 |
Moderator
|
Цитата:
Сообщение от KMV
Иногда в одной компании работают на русской и английской версии
Не знаю, правда, как поступает в этом случае конкретно Аксапта - т.е. старается ли она подражать пользовательскому вводу или ей можно подставлять записанный материал рекордера... |
|
![]() |
#15 |
NavAx
|
Для группировки надо что то вроде этого сделать.
comRange = comWorkSheet.Range("A1:E1"); comRange.select(); comRows = comRange.rows(); comRows.group(); |
|
![]() |
#16 |
Участник
|
PHP код:
|
|
![]() |
#17 |
Участник
|
Получить такую группировку можно при помощи сводной таблицы, заодно итоги и подитоги настроить и фильтры удобные получить.
На первый лист выгрузить данные на втором построить сводную таблицу. Есть правда ограничение по количеству строк данных (65536), но для маленьких отчетов этот вариант очень удобен. |
|
![]() |
#18 |
Участник
|
Цитата:
Сообщение от Gustav
Вообще, макрорекордер Excel в любой версии, слава Богу, пишет по-английски...
А вот если писать так: PHP код:
|
|
![]() |
#19 |
Moderator
|
![]()
А подскажите, пожалуйста, по ходу, раз уж говорим об этом.
Свойство Formula эксельного объекта Range доступно при использовании класса ComExcelDocument_RU ? Или надо идти путем: COM c = new COM("Excel.Application") ? Заранее спасибо. |
|
![]() |
#20 |
Участник
|
формула это лишь текст, который вставляется ка и любое другое значение в ячейку
|
|