【问题标题】:Applying an empty filter on the Active Excel Spreadsheet - C#在活动 Excel 电子表格上应用空过滤器 - C#
【发布时间】:2019-12-12 02:18:33
【问题描述】:

所以,我正在使用 C# 解析大量 Excel 文件,我的程序正在做的一件事是在工作簿的活动工作表上重新应用过滤器。但我在调用 .AutoFilter() 方法时收到此错误 System.Runtime.InteropServices.COMException: '_AutoFilter method of Range class failed'。

                var xlWorkBook = xlApp.Workbooks.Open(file.FullName);
                Worksheet xlWorkSheet = xlWorkBook.Sheets["Data"];
                xlWorkSheet.Range["A:Q"].AutoFilter();

关于什么可能是错的任何想法?

要详细说明这个问题,我需要在大约 100 多个工作簿上运行此代码,并且工作表有 10 到 20,000 行,运行工作表的脚本会进行大量计算以添加 3 个新列,唯一的缺少的部分是将这 3 个新列添加到电子表格中显示的过滤器中。

【问题讨论】:

  • 鉴于您的修复工作没有只指向标题行,我记下了我的答案。
  • 好的!非常感谢您的帮助。

标签: c# excel vsto


【解决方案1】:

在弄乱了我的代码之后,我终于找到了解决方案。

而不是使用

xlWorkBook.Sheets["Data"].Range["A:Q"].AutoFilter();

我用过这个

xlWorkBook.ActiveSheet.Range["A:Q"].AutoFilter();

为什么第一种方法不起作用我无法理解,只是发布我的解决方案以防将来有人遇到同样的问题。

【讨论】:

  • 非常感谢。我花了几个小时试图在我的 Excel VSTO 加载项中使用“第一种方法”,包括使用对活动工作表的引用:Excel.Worksheet objActiveSheet = Globals.ThisAddIn.Application.ActiveSheet; objActiveSheet.Range["XX:XX"].AutoFilter();。最后,只有“第二种方式”有效:Globals.ThisAddIn.Application.ActiveSheet.Range["XX:XX"].AutoFilter();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2014-09-14
  • 2013-01-21
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多