AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.08.2006, 11:32   #1  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
Выгрузка данных в Excel и их группировка...
Собственно сабж. Выгрузку произвел, данные не могу сгруппировать, штатные средства не позволяют, или я не могу ими воспользоваться.
Макрос из Excel элементарный
PHP код:
Rows("7:12").Select
Selection
.Rows.Group 
но средствами Axapta 3.0 sp4 реализовать не могу. Имеется ли у кого положительный опыт в это области?
Старый 23.08.2006, 12:17   #2  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Джон, привет!!
А проблема в первой строке или во второй?
Старый 23.08.2006, 12:17   #3  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
во второй
Старый 23.08.2006, 12:18   #4  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
В классе ComExcelDocument_RU пишем такую функцию:
PHP код:
public void group(BookMark _bookMarkint _workSheet 1)
{
   
COM         XLSWorkSheetXLSrange;
 ;

   
// Initializing XLSWorkSheet object
   
XLSWorkSheet    this.getWorkSheet(_workSheet);
   if (!
XLSWorkSheet)
       throw 
error("@DIS6043");

   
// Initializing XLSRange object
   
XLSrange        this.findRange(_bookMark);
   if (!
XLSrange)
       throw 
error("@SYS27391");

    
// Group selection
    
XLSrange.group();

Вызываем так:
PHP код:
        excelDocument = new ComExcelDocument_RU();
        
excelDocument.group("1:10"); // группируем строки с 1 по 10 
За это сообщение автора поблагодарили: George Nordic (5), gl00mie (1).
Старый 23.08.2006, 13:39   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Рискну предложить свой "интерфейсный" вариант

Фрагмент кода VBA
Код:
Rows("7:12").Select 
Selection.Rows.Group
можно записать более компактно как
Код:
Rows("7:12").Group
(т.е. "выделять" при помощи Select не обязательно)

Соответственно, компактное отображение в X++ примерно такое:
Код:
COM::createFromVariant( rows.Item('7:12') ).Group();
Проверить работоспособность можно, вставив эту последнюю строку в самый конец моего примера отсюда.
(rows - это переменная из примера)

===============================

(последующие сообщения темы были выделены 05.09.2006 в самостоятельную ветку О проверках в классе ComExcelDocument_RU )

Последний раз редактировалось Gustav; 05.09.2006 в 09:59.
За это сообщение автора поблагодарили: gl00mie (1), Stainless (1).
Старый 18.08.2008, 11:17   #6  
Stainless is offline
Stainless
Участник
MCBMSS
Columbus IT
 
34 / 114 (4) +++++
Регистрация: 26.01.2007
Никак не могу заставить группироваться столбцы, делаю так:
X++:
columns = wks.Columns();
COM::createFromVariant( columns.Item('7:12') ).Group();
вылетает ошибка Excel.
И еще не получилось свернуть группы по строкам и столбцам, на VBA это выглядит так:
X++:
ActiveSheet.Outline.ShowLevels RowLevels:=2
Спасибо
Старый 18.08.2008, 13:04   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Stainless Посмотреть сообщение
Никак не могу заставить группироваться столбцы, делаю так:
X++:
columns = wks.Columns();
COM::createFromVariant( columns.Item('7:12') ).Group();
вылетает ошибка Excel.
Для столбцов при таком подходе Item('from:to') в качестве from и to надо использовать буквы столбцов Excel, т.е. 7-й - это G, а 12-й - L:
X++:
COM::createFromVariant( columns.Item('G:L') ).Group();
P.S. Универсальный же вариант (только числа) выглядит примерно так:
X++:
COM rng; // excel Range

// для группировки колонок
rng = COM::createFromVariant( columns.item(7) );
rng = rng.Resize( COMArgument::NoValue, 12-7+1 );
rng.Group();

// для группировки строк
rng = COM::createFromVariant( rows.item(7) );
rng = rng.Resize( 12-7+1 ); 
rng.Group();
Любопытно, что оператор "rng.Resize(...);" почему-то не работал, т.е. ошибки не возникало, но группировалась только одна 7-я колонка (строка). После придания ему вида явного присваивания "rng = rng.Resize(...)" стали группироваться все 6 колонок, как и задумывалось.
Старый 19.08.2008, 08:40   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Stainless Посмотреть сообщение
И еще не получилось свернуть группы по строкам и столбцам, на VBA это выглядит так:
X++:
ActiveSheet.Outline.ShowLevels RowLevels:=2
Да, существует проблема "невоспроизведения" такой строки в X++.
Ей была посвящена целая ветка: Помогите сделать действие в Excel через COM
Старый 09.12.2013, 11:28   #9  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Цитата:
Сообщение от Gustav Посмотреть сообщение
Да, существует проблема "невоспроизведения" такой строки в X++.
Ей была посвящена целая ветка: Помогите сделать действие в Excel через COM
Ну почему же:
X++:
COM    outline;
;    
...
currColumns.Select();
currColumns.Group();
outline = activeSheet.Outline();
outline.showLevels(0,1);
вот так вполне работает.
Решение CommandBars всегда устраивало, пока не пришлось делать группировку колонок у Сводной таблицы - линия с плюсиком группировки рисуется, а схлапываться не хотела(
За это сообщение автора поблагодарили: S.Kuskov (3).
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Быстрый способ вывода данных в Excel с картинками Zlojbarsuk DAX: Программирование 10 23.10.2008 20:13
зкспорт данных в Excel exodus DAX: Программирование 3 25.10.2007 05:10
автоматическая выгрузка в Excel из SpreadSheet 11 NetBus DAX: Программирование 11 29.05.2007 17:56
Не идет выгрузка отчета в Excel. Слабая машина. asabin DAX: Администрирование 27 29.06.2005 10:48

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:44.