如何使用C#和Excel Interop应用筛选器并将筛选器结果复制到另一个工作表

问题描述

我想对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:

enter image description here

Sheet2:

enter image description here