C# 如何在EPPlus中筛选列(而不是行)?

C# 如何在EPPlus中筛选列(而不是行)?,c#,excel,excel-interop,epplus,epplus-4,C#,Excel,Excel Interop,Epplus,Epplus 4,筛选特定列中的行与在ePlus中筛选饼图一样简单: private ExcelWorksheet prodUsageWorksheet; . . . prodUsageWorksheet.Cells["A6:A6"].AutoFilter = true; 这允许我筛选列A中的行: 我还需要过滤掉某些列,例如月份列(在屏幕截图中,9月15日和10月15日,但通常还有几个)。例如,我希望使用EPPlus以编程方式生成以下内容: 取消选择“全选”,选择月份的子集,然后单击“确定”按钮,使未选择的

筛选特定列中的行与在ePlus中筛选饼图一样简单:

private ExcelWorksheet prodUsageWorksheet;
. . .
prodUsageWorksheet.Cells["A6:A6"].AutoFilter = true;
这允许我筛选列A中的行:

我还需要过滤掉某些列,例如月份列(在屏幕截图中,9月15日和10月15日,但通常还有几个)。例如,我希望使用EPPlus以编程方式生成以下内容:

取消选择“全选”,选择月份的子集,然后单击“确定”按钮,使未选择的月份崩溃

查看一些旧版Excel互操作代码,似乎是这样做的:

fld = ((PivotField) pvt.PivotFields("Month"));
fld.Orientation = XlPivotFieldOrientation.xlColumnField;
fld.NumberFormat = "MMM yy";
具体而言,第二个代码块(方向设置为
xlColumnField
)是显示排序/筛选按钮的列,当操作该按钮时,会有条件地显示/隐藏各种列

它是否根据数字格式确定哪些列可显示/隐藏?也就是说,如果值是“9月15日”或“10月16日”

我不知道,但我在代码中看不到任何其他更具体地设置列筛选限制的内容


无论如何,如果这是Excel Interop实现的方式,那么在EPPlus中有什么等价物呢?

另一篇文章中已经提出了这一问题。此外,这并不是EPPlus的目的,因为列过滤更像是一种“动态”最终用户功能

看看这个,看看它是否回答了你的问题:


您可能已经选中了post,但您的ePlus似乎无法以本机方式添加列过滤器。。链接确实提供了一个解决方法,但我不相信它与您的案例相匹配是的,我看到了,谢谢;不幸的是,为此,我不得不求助于Excel互操作。这就像在滚石乐队不可用时预订Troggs,因为滚石乐队拒绝播放“Wild Thang!”是的,我打算建议迁移到Interop库,我感觉到了您的痛苦:/不幸的是,您要查找的内容在XML中非常困难。有很多文件需要处理,在放弃之前,我从来没有把它们全部弄清楚,因为这对我所做的并不重要。祝你好运。我遇到了一个类似的问题,下面是我所做的:所以基本上xlsx只是一个zip文件。创建基本工作簿,将其解压缩到某个位置,在Excel中根据需要修改工作簿,保存它,再次解压缩并检查解压缩内容的差异。然后,您可以通过自己从代码中添加或编辑条目来模拟Excel的行为。最好的部分:没有Excel互操作!我也写了一篇关于它的博客文章,你可以在这里查看:如果你喜欢这种方法,如果你需要帮助,我很乐意进一步讨论。在我看来,应该是评论而不是答案。同意关于答案的评论;我用了一个细胞来做这个;它可以做数据透视表——就像使用Excel Interop一样——但速度使Aspose单元格:Excel Interop的速度比看起来像猎豹:糖蜜