到目前为止,我一直使用AutoFilter()方法没问题。但我无法标记或获取已过滤行的范围,无法计算/复制/删除它们。
我在VBA上看过很多关于这个问题的帖子,但是C#没有。
过滤后,我试图通过以下任何一行获得范围:
range = ws.UsedRange.CurrentRegion.SpecialCells(Excel.XlCellType.xlCellTypeVisible, missing);
range = ws.AutoFilter.Range.SpecialCells(Excel.XlCellType.xlCellTypeVisible, missing);
range = ws.Cells.SpecialCells(Excel.XlCellType.xlCellTypeVisible, missing);
我甚至尝试了其他我甚至不记得的方式。
在标记范围后,我尝试通过执行以下操作来计算行数:
range.Rows.Count
并且在每种情况下,我得到了工作表的总行数,有时我得到65536(office 2003),有时只有1,但肯定不是我过滤的行数。
我必须将它与Office 2003一起用于对象库11。
答案 0 :(得分:2)
确定。经过长时间的睡眠。我有一些力量来尝试更多方向,这次没有得到其他论坛和谷歌的指示。
试试这个:
Excel.Range range = workSheet.UsedRange;
range.AutoFilter(1, criteriaString , Excel.XlAutoFilterOperator.xlAnd, missing, true);
(这将根据第1列过滤行,并以criteriaString作为标准)
Excel.Range filteredRange = range.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, missing);
filteredRange.Rows.Count
整数来计算行数,并做有趣的事情。这就是它!它必须很简单然后我才想到它。
由于
答案 1 :(得分:1)
为了删除行,它只是
range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp);
答案 2 :(得分:0)
在autofilter之后,我想在过滤的行中只在范围“N”中命名一个术语“COGI”。如果要写入只读取范围“N”并插入术语“COGI”