Как фильтровать столбцы (а не строки) в EPPlus?

Фильтровать строки в определенном столбце очень просто в EPPlus:

private ExcelWorksheet prodUsageWorksheet;
. . .
prodUsageWorksheet.Cells["A6:A6"].AutoFilter = true;

Это позволяет мне фильтровать строки в столбце A:

введите описание изображения здесь

Мне также нужно отфильтровать определенные столбцы, например столбцы месяца (на скриншоте 15 сентября и 15 октября, но обычно их несколько больше). Например, я хочу программно сгенерировать с помощью EPPlus следующее:

введите описание изображения здесь

Отмена выбора «Выбрать все», выбор подмножества месяцев, а затем нажатие кнопки «ОК» приводит к сворачиванию невыбранных месяцев.

Глядя на какой-нибудь устаревший код Excel Interop, может показаться, что там это делается так:

fld = ((PivotField) pvt.PivotFields("Month"));
fld.Orientation = XlPivotFieldOrientation.xlColumnField;
fld.NumberFormat = "MMM yy";

В частности, второй блок кода (с ориентацией, установленной на xlColumnField) — это столбец с кнопкой сортировки/фильтрации, которая при манипулировании условно показывает/скрывает различные столбцы.

Определяет ли он, какие столбцы отображать/скрывать на основе числового формата? То есть, если значение "15 сентября" или "16 октября"?

Я не знаю, но я не вижу ничего другого в коде, который более конкретно устанавливает ограничения фильтрации столбцов.

Во всяком случае, если Excel Interop делает это именно так, то что эквивалентно в EPPlus?


person B. Clay Shannon    schedule 07.10.2016    source источник
comment
Вы, вероятно, уже проверили этот пост, но похоже, что вы EPPlus не может изначально добавлять фильтры столбцов. Ссылка действительно предоставляет обходной путь, но я не верю, что он соответствует вашему случаю.   -  person Innat3    schedule 13.10.2016
comment
Да, я это видел, спасибо; для этого мне, к сожалению, приходится вернуться к Excel Interop. Это как заказать Troggs, когда Rolling Stones недоступны, потому что Stones отказываются играть в Wild Thang!   -  person B. Clay Shannon    schedule 13.10.2016
comment
Да, я собирался предложить перейти на библиотеку Interop, я чувствую вашу боль :/   -  person Innat3    schedule 13.10.2016
comment
К сожалению, то, что вы ищете, было бы очень сложно в XML. Есть много файлов, с которыми вам нужно манипулировать, и я никогда не мог разобраться во всех них, прежде чем сдаться, поскольку это было НЕ НАСТОЛЬКО важно для того, что я делал. Удачи.   -  person Ernie S    schedule 16.10.2016
comment
@ Эрни: XML? Я ничего не делаю в XML; к сожалению, мне пришлось вернуться к Excel Interop для программного создания сводных таблиц.   -  person B. Clay Shannon    schedule 17.10.2016
comment
Один из вас (или кто-то другой) может также написать ответ, чтобы я мог присудить награду; иначе он сгорит в дыму   -  person B. Clay Shannon    schedule 18.10.2016
comment
Вы пытались использовать сводную таблицу для достижения таких результатов? stackoverflow.com/q/11650080/1437693   -  person Yuri Tceretian    schedule 09.01.2017
comment
@YuriTceretian: Да, но в конце концов я обнаружил, что EPPlus не нужен с точки зрения сводной таблицы, и переключился на Aspose Cells для отчета, где требовалась сводная таблица.   -  person B. Clay Shannon    schedule 10.01.2017
comment
Почему бы вам просто не использовать C#? Я предполагаю, что вы записываете данные на лист excel, используете списки объектов, которые могут представлять ваши данные, сортируете список, а затем записываете его в excel   -  person Yahya Hussein    schedule 22.02.2017
comment
@YahyaHHussein: я использую C#; если вы имеете в виду, почему бы не использовать Excel Interop, я начал с этого, но это ОЧЕНЬ медленно. EPPlus — это значительное улучшение, и для более тяжелых работ мне больше всего подходит Aspose. Например, для сводных таблиц Aspose спас меня. YMMV.   -  person B. Clay Shannon    schedule 22.02.2017
comment
У меня была аналогичная проблема, вот что я сделал: в основном xlsx — это просто zip-файл. Создайте свою базовую книгу, разархивируйте ее куда-нибудь, измените книгу в Excel по своему усмотрению, сохраните ее, снова разархивируйте и проверьте разархивированное содержимое. Затем вы можете имитировать поведение Excel, самостоятельно добавляя или редактируя записи из своего кода. Лучшая часть: нет взаимодействия с Excel! Я также написал об этом сообщение в блоге, вы можете проверить его здесь: dotnetfalcon.com/adding-custom-parts-to-an-xlsx-workbook Если вам нравится этот подход, я буду рад обсудить его дальше, если вам понадобится помощь.   -  person Akos Nagy    schedule 06.03.2017
comment
Спасибо, мне пришлось прибегнуть к Aspose для этого, так что пока у меня все хорошо.   -  person B. Clay Shannon    schedule 06.03.2017


Ответы (1)


Это было задано в другом сообщении. Кроме того, это не то, для чего предназначен EPPlus, поскольку фильтрация столбцов является скорее «динамической» функциональностью конечного пользователя.

Взгляните на это и посмотрите, отвечает ли это на ваш вопрос:

Добавление определенного автофильтра в столбец

person Community    schedule 04.04.2017
comment
На мой взгляд, должен быть комментарий, а не ответ. - person Uwe Keim; 04.04.2017
comment
Согласен с комментарием к ответу; Для этого я использовал Aspose Cells; он может создавать сводные таблицы — как вы можете с Excel Interop — но со скоростью, которая делает соотношение скорости Aspose Cells: Excel Interop похожим на гепард: патока - person B. Clay Shannon; 04.04.2017