C#EPPlus:如何修复-ShowFilter不起作用

时间:2018-11-02 21:15:04

标签: epplus epplus-4

使用EPPLUS库的Table.ShowFilter问题。
在工作表中创建了新的ExcelTable,但无法应用Table.ShowFilter = false。
过滤器仍在表中。 TableStyle和StyleName可以正常工作。

ExcelTable et = (ExcelTable)Table;
int firstRow = newRow;
int lastRow;
if (DataStructure.Data != null)
      lastRow = newRow + DataStructure.Data.Count();
else
      lastRow = newRow + 1;

int firstColumn = OriginalAddress.StartColumn;
int lastColumn = OriginalAddress.EndColumn;

ExcelRange rg = ws.Cells[firstRow, firstColumn, lastRow, lastColumn];

Guid guid = Guid.NewGuid();
string str_guid = guid.ToString();
string tableName = et.Name + "_" + str_guid;

ExcelTable tab = wsTarget.Tables.Add(rg, tableName);
//  tab.ShowHeader = et.ShowHeader;
//  tab.TableStyle = et.TableStyle;
//  tab.StyleName = et.StyleName;
tab.ShowFilter = false;

Right table is desired result.

请帮忙修复!

2 个答案:

答案 0 :(得分:0)

这是你的意思吗?

MyStruct construct_struct(int a, int b, int c, ...){
}
MyStruct::MyStruct(int a, int b, int c, ...){
    *this = construct_struct(a,b,c,...);
}

这个很小的例子在这里起作用:

tab.ShowHeader = false;

答案 1 :(得分:0)

可能是错误。 将ws2.DeleteColumn(1,1)添加到代码中,将过滤器添加到表中,即使使用tab.ShowFilter = false。

解决方法:将tab.ShowFilter = false放在文件保存之前。

 using (ExcelPackage xls = new ExcelPackage())
        {
            ExcelWorksheet ws2 = xls.Workbook.Worksheets.Add("f1");
            OfficeOpenXml.Table.ExcelTable tab = ws2.Tables.Add(new ExcelAddressBase("d3:g8"), "table");
            //tab.TableStyle = et.TableStyle;
            //tab.StyleName = et.StyleName;

            ws2.DeleteColumn(1, 1);

            tab.ShowFilter = false;

            FileInfo f = new FileInfo(@"test.xlsx");
            xls.SaveAs(f);
        }