【问题标题】:How to disable autofilter in closedXml c#?如何在 closedXml c# 中禁用自动过滤器?
【发布时间】:2016-03-28 11:47:59
【问题描述】:

我在 closedXML 库中遇到了一个奇怪的问题。

我正在使用 closedXML 库将数据表导出到 .xlsx(excel 文件)。 默认情况下,库中启用了自动过滤器。

我想禁用或删除自动过滤器并仅导出数据表。

这是我尝试过的代码,但它不起作用

XLWorkbook wb = new XLWorkbook();
var ws = wb.Worksheets.Add("Test");
ws.Cell(1, 1).InsertTable(dataTable);
ws.AutoFilter.Enabled = false;
ws.Columns().AdjustToContents();
wb.SaveAs("Report.xlsx");

我也试过了

ws.AutoFilter.Clear();

即使按列清除过滤器也不起作用

ws.AutoFilter.Column(1).Clear();

【问题讨论】:

    标签: c# excel closedxml


    【解决方案1】:

    您可以使用 ws.Worksheet(1).AutoFilter.Clear() 'vb.net

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,下面的代码对我不起作用,

      ws.Tables.FirstOrDefault().ShowAutoFilter = false;
      

      我有 ClosedXML 0.93 版,对我有用的是:

      ws.Tables.FirstOrDefault().SetShowAutoFilter(false);
      

      【讨论】:

        【解决方案3】:

        要删除所有表格过滤器,您可以使用 Linq ForEach。

        ws.Tables.ForEach(x=>x.ShowAutoFilter = false);
        

        【讨论】:

          【解决方案4】:

          这也可能有效:

          ws.AutoFilterMode = False
          

          【讨论】:

            【解决方案5】:

            尝试使用下面的代码,它应该可以正常工作

            ws.Tables.FirstOrDefault().ShowAutoFilter = false;
            

            【讨论】:

            • 欢迎来到 StackOverflow!在发布下一个问题之前,您可能需要阅读此页面。 stackoverflow.com/help/how-to-ask
            • 它的工作。而且我还发现了如何禁用自动过滤所有工作表。 foreach(wb.Worksheets 中的 IXLWorksheet 工作表){ foreach(workSheet.Tables 中的 IXLTable 表){ workSheet.Table(table.Name).ShowAutoFilter = false; workSheet.Columns().AdjustToContents(); } }
            • 很好,请注意,AdjustToContents 可能需要时间,具体取决于您的数据量
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-29
            • 2014-05-24
            相关资源
            最近更新 更多