问题描述
我想对Excel工作表应用过滤器,然后将结果行复制到另一工作表并使用C#(互操作)保存。
我尝试过这样:
range.AutoFilter(1,"1",..,..);
filteredRange = range.specialcells(..celltypeVisible,..);
在此代码中,filteredRange
的大小始终为1行。
解决方法
您可以尝试使用以下代码将过滤结果复制到另一张纸上。
string path = "D:\\Test.xlsx";
Excel.Application app = new Excel.Application();
app.CutCopyMode = Excel.XlCutCopyMode.xlCut;
Excel.Workbook workbook = app.Workbooks.Open(path);
Excel.Worksheet worksheet = workbook.Worksheets[1];
Excel.Worksheet newWorksheet= (Excel.Worksheet)app.Worksheets.Add();
Excel.Range range = worksheet.UsedRange;
worksheet.AutoFilterMode = false;
range.AutoFilter(1,"Test2");
worksheet.AutoFilter.Range.Copy();
newWorksheet.AutoFilterMode = false;
newWorksheet.Paste();
workbook.Save();
workbook.Close();
Sheet1:
Sheet2: