如何在EPPlus中使用C#删除AutoFilter

我已经尝试了下面的C#编码:

wsDt.Cells["A10:G10"].AutoFilter = false; 

但filter不会从我的Excel中删除。

任何其他方式来删除它。

谢谢…

这似乎是一个EPPlus错误,我不认为它已经解决了最新版本(4.04),至less我可以找出一个解决scheme。 我的解决方法是简单地一次一个循环加载一行电子表格值:

 int sheetRow = 3; for (int outer = 0; outer < outerSourceTable.Rows.Count; outer++) { var outerThingId = Convert.ToInt32(outerSourceTable.Rows[outer]["OuterThingId"]); var outerThingName = Convert.ToString(outerSourceTable.Rows[outer]["OuterThing"]); var innerThingsTable = _repository.GetInnerThings(outerThingId); if (innerThingsTable.Rows.Count > 0) { myWorksheet.Cells[sheetRow, 1].Value = outerThingName; // Load the data into the worksheet. We need to load a row at a time // to avoid the auto-filter bug for (int inner = 0; inner < innerThingsTable.Rows.Count; inner++) { var innerName = Convert.ToString(innerThingsTable.Rows[inner]["Name"]); var innerDescr = Convert.ToString(innerThingsTable.Rows[inner]["Description"]); myWorksheet.Cells[sheetRow, 2].Value = innerName; myWorksheet.Cells[sheetRow, 3].Value = innerDescr; sheetRow++; } sheetRow++; } } 

在Excel中,当使用“格式作为表格”选项时,不仅可以设置数据样式,还可以创build命名范围 – 表格1。 该选项也会自动启用过滤button。 格式化为表格之后,您可以取消选中表格工具 – >表格样式选项中的filterbutton。

什么对我来说是以编程方式做同样的事情。

  1. 基本上LoadFromDataTable(DataTable,bool,TableStyles)
    • 将数据从ExcelRange开始粘贴到工作表中
    • 应用表格格式
    • 使用DataTable.TableName来命名范围
    • 启用过滤button
  2. 禁用筛选button

    • 使用DataTable.TableName引用指定的范围
    • 设置ShowFilter为false在这里input代码

       //imagine a table with 5 columns DataTable dt = new DataTable(); dt.TableName = "UniqueTableName"; //define the cells where the headers will appear int topRow = 1; int leftMostColumn = 1; int rightMostColumn = 5; //bind the DataTable using LoadFromDataTable() OfficeOpenXml.ExcelRange excelRange = worksheet.Cells[topRow, leftMostColumn, topRow, rightMostColumn]; excelRange.LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light8); //turn of the filtering OfficeOpenXml.Table.ExcelTable table = worksheet.Tables[dt.TableName]; table.ShowFilter = false;