c # Свернуть поля в Excel Сводная таблица

У меня есть готовый Excel с PivotTable, который получает данные из другого листа, я заполняю код c #.

В сводной таблице есть три поля Row, которые после заполнения и Pivot обновлены с помощью кода, объединили все строки, расширенные после открытия Excel.

Я уже пробовал использовать метод DrilledDown (в полях, но я получаю сообщение об ошибке), ShowDetails работает только в элементах (внутри полей).

Я получил его для работы, но это занимает слишком много времени, потому что он использует ShowDetails в каждом элементе, есть ли какой-нибудь другой способ и быстро для свертывания полей? (открытие excel и сделать это вручную не вариант: P).

Мой код (который разрушает поля):

listItems.Add("Data"); listItems.Add("Months"); listItems.Add("Grocery"); Microsoft.Office.Interop.Excel.PivotFields pfs = (Microsoft.Office.Interop.Excel.PivotFields)pivot.PivotFields(); foreach (String s in listItems){ Microsoft.Office.Interop.Excel.PivotField pf = (Microsoft.Office.Interop.Excel.PivotField)pivot.PivotFields(s); foreach (Microsoft.Office.Interop.Excel.PivotItem item in (Microsoft.Office.Interop.Excel.PivotItems)pf.PivotItems()) { if (item.Value == "(blank)") item.Visible = false; item.ShowDetail = false; } } 

Дело в том, может быть, есть простой и быстрый способ? Я пытался что-то вроде

 pf.DrilledDown = False; 

или

 pf.ShowDetail = False; 

Но это не работает.: \ Any Ideas?

ТИА

Ну, обойтись как-нибудь, чтобы просто свернуть первый элемент в каждом поле (так как цикл не идет до конца, а так как Excel автоматически свертывает другие подобные элементы (когда вы сбрасываете одно из полей типа), он работает ).

PS: Поскольку первое поле из бакалейных товаров всегда является «_blank», я точно знаю, что есть что-то после «_blank», но я не могу применить только коллапс к «_blank», потому что тогда он не применимо к другим предметам (я предполагал, что это должно быть что-то со значением внутри).

Итак … получил это (это намного быстрее, но все же, я думаю, что он будет существовать другим путем (с более простым кодом в c # (без использования макросов VB внутри Excel)), но если есть, трудно найти – мало кто манипулирует сводными таблицами программно.

  listItems.Add("Date"); listItems.Add("Months"); listItems.Add("Groceries"); Microsoft.Office.Interop.Excel.PivotFields pfs = (Microsoft.Office.Interop.Excel.PivotFields)pivot.PivotFields(); foreach (String s in listItems) { Microsoft.Office.Interop.Excel.PivotField pf = (Microsoft.Office.Interop.Excel.PivotField)pivot.PivotFields(s); foreach (Microsoft.Office.Interop.Excel.PivotItem item in (Microsoft.Office.Interop.Excel.PivotItems)pf.PivotItems()) { if (pf.Value == "Date") { item.ShowDetail = false; break; } if (pf.Value == "Months") { item.ShowDetail = false; break; } if (pf.Value == "Groceries") { if (item.Value == "(blank)") { item.Visible = false; continue; } item.ShowDetail = false; break; } } } 
  • Бесплатное решение для чтения / создания / обновления excel-файлов из .NET.
  • ComboBox отображает DataRowView вместо фактических значений
  • Цвет текста C #
  • Для этого родителя разрешен только один экземпляр типа, но часть чертежа равна нулю
  • Копировать стиль / формат одной ячейки в другую ячейку Excel Interop C #
  • загрузить файл excel с помощью ASP.net и C #
  • Проверьте, защищен ли лист, если пароль не указан
  • Как добавить лист в конец книги в excel с помощью ActiveQt?
  • Каким образом можно импортировать Excel-файл в SQL Server на 64-битной платформе Windows в ASP.NET?
  • Экспорт TreeNode в Excel
  • Как дать динамическое имя DataSource в App.config
  • Давайте будем гением компьютера.