c # EPPlus: как исправить - ShowFilter не работает - PullRequest
0 голосов
/ 03 ноября 2018

Проблема с Table.ShowFilter при использовании библиотеки EPPLUS.
Создан новый 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;

Правый стол - желаемый результат.

Пожалуйста, помогите исправить!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Возможно, ошибка. Добавляя 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);
        }
0 голосов
/ 06 ноября 2018

Это вы хотите иметь в виду?

tab.ShowHeader = false;

Этот очень маленький пример работает здесь:

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

            FileInfo f = new FileInfo(@"d:\temp\test.xlsx");
            xls.SaveAs(f);
        }
...