C# - Excel - 如何在AutoFilter之后删除可见行?

时间:2016-01-12 14:38:15

标签: c# excel visual-studio-2015 excel-2013 excel-interop

我正在使用一个小命令行工具从excel表中提取一些数据。

我想删除应用AutoFilter后可见的所有行。

不幸的是,我只是不知道如何继续。 经过一番搜索,我没有找到适合我的答案。

这是我到目前为止所得到的:

        oXL = new Excel.Application();
        oXL.Visible = false;
        oWB = oXL.Workbooks.Open(source);
        oXS = (Excel.Worksheet)oWB.Sheets[1];

        Excel.Range filter = oXS.UsedRange;
        filter.AutoFilter(8, "<>text to filter");

如何删除过滤后显示的所有行?

感谢。

CRowland

3 个答案:

答案 0 :(得分:0)

也许回答有点迟,但我把它作为参考。 每个Excel.Range对象都有一个Delete()方法:

    Excel.Range filter = oXS.UsedRange;
    filter.AutoFilter(8, "<>text to filter");
    filter.AutoFilter.Range.Delete();

答案 1 :(得分:0)

$color_codes = ColorCode::select(['color_code.code', 'manufacturer_bundle.name'])->distinct()
  ->leftJoin('manufacturer_bundle', 'color_code.manufacturer_id' , '=' , 'manufacturer_bundle.id')
->get();

foreach ($color_codes as $color_data) {
  $color_code = ColorCode::where('code', color_data->code)->first();
  echo $color_code->manufacturer->name;
}

答案 2 :(得分:0)

您可以查看此 VBA 参考。顺便说一句,在操作 EnableAutoFilter 函数之前,您需要为工作表设置 AutoFilter 值。

https://danwagner.co/how-to-delete-rows-with-range-autofilter/