如何在 EPPlus 中过滤列(而不是行)?
Posted
技术标签:
【中文标题】如何在 EPPlus 中过滤列(而不是行)?【英文标题】:How can I filter columns (rather than rows) in EPPlus? 【发布时间】:2016-10-07 20:39:21 【问题描述】:在特定列中过滤行就像在 EPPlus 中做饼一样简单:
private ExcelWorksheet prodUsageWorksheet;
. . .
prodUsageWorksheet.Cells["A6:A6"].AutoFilter = true;
这允许我过滤 A 列中的行:
我还需要过滤掉某些列,例如月份列(在屏幕截图中,9 月 15 日和 10 月 15 日,但通常更多)。例如,我想使用 EPPlus 以编程方式生成以下内容:
取消选择“全选”,选择月份的子集,然后单击“确定”按钮会使未选择的[s] 折叠。
查看一些遗留的 Excel 互操作代码,似乎在那里,它是这样完成的:
fld = ((PivotField) pvt.PivotFields("Month"));
fld.Orientation = XlPivotFieldOrientation.xlColumnField;
fld.NumberFormat = "MMM yy";
具体来说,第二个代码块(方向设置为xlColumnField
)是显示排序/过滤按钮的列,当操作该按钮时,有条件地显示/隐藏各个列。
它是否根据数字格式确定哪些列是可显示/可隐藏的?也就是说,如果值是“Sep 15”还是“Oct 16”?
我不知道,但我在代码中看不到任何其他更具体地设置列过滤限制的内容。
无论如何,如果 Excel Interop 是这样实现的,那么 EPPlus 中的等价物是什么?
【问题讨论】:
您可能已经检查过this 帖子,但您的 EPPlus 似乎无法在本地添加列过滤器。该链接确实提供了一种解决方法,但我认为它不匹配你的情况 是的,我看到了,谢谢;为此,不幸的是,我不得不求助于 Excel 互操作。这就像在滚石乐队不可用时预订 Troggs,因为滚石乐队拒绝播放“Wild Thang!” 是的,我打算建议迁移到 Interop 库,我感到你很痛苦:/ 不幸的是,您在 XML 中查找的内容非常困难。您必须处理许多文件,而在放弃之前,我从来没有完全弄清楚它们,因为这对我正在做的事情并不重要。祝你好运。 我遇到了类似的问题,这就是我所做的:所以基本上 xlsx 只是一个 zip 文件。创建您的基本工作簿,将其解压缩到某个位置,根据需要在 Excel 中修改工作簿,保存,再次解压缩并检查解压缩内容的差异。然后,您可以通过自己从代码中添加或编辑条目来模仿 Excel 的行为。最好的部分:没有 Excel 互操作!我也写了一篇关于它的博客文章,你可以在这里查看:dotnetfalcon.com/adding-custom-parts-to-an-xlsx-workbook如果你喜欢这种方法,如果你需要帮助,我很乐意进一步讨论。 【参考方案1】:这已在另一个帖子中提出。此外,这不是 EPPlus 的用途,因为列过滤更像是一种“动态”最终用户功能。
看看这个,看看它是否回答了你的问题:
Adding a specific autofilter on a column
【讨论】:
在我看来,应该是评论而不是答案。 同意关于答案的评论;我为此使用了 Aspose Cells;它可以做数据透视表——就像你可以使用 Excel 互操作一样——但速度使 Aspose 单元格:Excel 互操作速度比看起来像猎豹:糖蜜以上是关于如何在 EPPlus 中过滤列(而不是行)?的主要内容,如果未能解决你的问题,请参考以下文章
在闪亮的 R 中使用 selectInput 来选择和过滤行,而不是选择列