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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2018, 09:52   #1  
iiipoizone is offline
iiipoizone
Участник
 
43 / 11 (1) +
Регистрация: 07.09.2015
Отчет Excel как c уровнями группировок


Есть у кого-то готовый пример как сделать такой отчет?

Нужно сделать такую группировку данных с итогами

Данных много, группировка и расстановка итогов работает у меня медленно.

1С вроде как умеет делать это быстро т.к создание таких отчетов для него уже продумана разработчиками.

Может кто-то делал такой отчет и поделиться проектом или алгоритмом?

Как сейчас считаю итоги:
по мере получения данных из базы данных считаю заполняю итоги в контейнеры,
потом когда все данные прочтены извлекаю итоги из контейнера и вношу в Excel

Группировку делаю через макросы, примерно так:

Sub MCGroup()
Dim cell As Range
Application.ScreenUpdating = False

Rows("2:2").Select



For Each cell In ActiveSheet.UsedRange.Columns(7).Cells
If (cell.Row >= 7 And cell.Font.Bold = False And cell.Value <> "") Then

If cell.Value <> "" Then cell.EntireRow.Group
End If
Next
Application.ScreenUpdating = True
End Sub


UPD: узнал, что в 1С такие отчеты называются уровни группировок. И в 1С это действительно работает быстро


Последний раз редактировалось iiipoizone; 27.04.2018 в 10:43.
Старый 27.04.2018, 13:08   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Не группируйте вручную, указывая диапазоны. Группируйте автоматически основываясь на значениях ячеек. Строки с одинаковыми значениями попадут в одну группу сами.
Старый 27.04.2018, 13:59   #3  
iiipoizone is offline
iiipoizone
Участник
 
43 / 11 (1) +
Регистрация: 07.09.2015
Автоматически - это как? Сводная таблица?

Последний раз редактировалось iiipoizone; 27.04.2018 в 14:10.
Старый 27.04.2018, 14:17   #4  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
Держите, метод для ComExcelDocument_RU
X++:
#define.xlSum(-4157)
public void insertSubtotal(MSOfficeBookMark_RU _bookMark,
                              int       _column,
                              int       _consolidationFunction,
                              Array     _array,
                              boolean   _replace = true,
                              boolean   _pageBreaks = false,
                              boolean   _summaryBelowData = true,
                              int       _workSheet = 1
                              )
{
    Com         range;
    ComVariant  xlArray;
    ;

    xlArray = ComVariant::createFromArray(_array);
    range = this.findRange(_bookMark, _workSheet);
    range.subtotal(_column, _consolidationFunction, xlArray, _replace, _pageBreaks, _summaryBelowData);
}
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 27.04.2018, 15:35   #5  
iiipoizone is offline
iiipoizone
Участник
 
43 / 11 (1) +
Регистрация: 07.09.2015
Цитата:
Сообщение от Weez Посмотреть сообщение
Держите, метод для ComExcelDocument_RU
X++:
#define.xlSum(-4157)
public void insertSubtotal(MSOfficeBookMark_RU _bookMark,
                              int       _column,
                              int       _consolidationFunction,
                              Array     _array,
                              boolean   _replace = true,
                              boolean   _pageBreaks = false,
                              boolean   _summaryBelowData = true,
                              int       _workSheet = 1
                              )
{
    Com         range;
    ComVariant  xlArray;
    ;

    xlArray = ComVariant::createFromArray(_array);
    range = this.findRange(_bookMark, _workSheet);
    range.subtotal(_column, _consolidationFunction, xlArray, _replace, _pageBreaks, _summaryBelowData);
}
как-то можно получить этот ComExcelDocument_RU из Microsoft.Office.Interop.Excel._Application application; или все переписывать нужно?
Старый 28.04.2018, 10:51   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от iiipoizone Посмотреть сообщение
как-то можно получить этот ComExcelDocument_RU из Microsoft.Office.Interop.Excel._Application application; или все переписывать нужно?
Пример приведён с использованием технологии COM, но его можно переписать и для NET.
https://msdn.microsoft.com/en-us/lib...code-snippet-1
Старый 27.04.2018, 15:16   #7  
iiipoizone is offline
iiipoizone
Участник
 
43 / 11 (1) +
Регистрация: 07.09.2015
Допустим мне надо группировать вот эту таблицу:


У меня сейчас отчет выводиться так:


SubTotal позволяет получить итоги только по одному столбцу:

Можно выбрать по очереди Level 3 , Level 2, Level 1
но итоги сложатся от предудущей операции и он работает красиво только по одному или двум столбцам.

Делаем SubTotal по 3-ем уровням level 3, level 2, level 1


как видим работает ужасно. Теперь представьте что будет с 5ю уровнями

Последний раз редактировалось iiipoizone; 27.04.2018 в 15:31.
Старый 28.04.2018, 09:40   #8  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
А что мешает сделать все через сводную таблицу в классическом виде?
Картинки исходного диапазона (плоская таблица) и сводная по диапазону в классическом виде во вложении
Изображения
  
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsax-fico: Dynamics 365 General Journal Excel Imports Blog bot DAX Blogs 0 08.12.2017 03:13
atinkerersnotebook: Using Excel to Import Products & Services in Dynamics AX Blog bot DAX Blogs 0 19.07.2013 15:11
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13
отчет в Excel Люда DAX: Программирование 1 26.09.2007 10:29
Из 1С в Excel Aslan DAX: Администрирование 1 11.10.2005 14:22

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

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

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