Сбой сортировки автофильтра Excel, который создается с помощью C # с Open XML Excel

1

Используя С# с openxml, я сгенерировал документ excel с некоторыми данными, я добавил параметр автофильтра в excel, используя приведенный ниже код,

        string reference= "B6:BA6";
        AutoFilter autoFilter1 = new AutoFilter() { Reference = reference };

        Worksheet sheet1 = new Worksheet();
        sheet1.Append(sheetData);
        sheet1.Append(autoFilter1);

Фильтр работает нормально, я попытался отсортировать данные, используя этот параметр автофильтра во вновь создаваемом Excel, но он сбой всего excel. Он отображает сообщение об ошибке, например "Excel перестает работать"...

  • 0
    Любопытно посмотреть, было ли найдено решение этой проблемы.
Теги:
excel

1 ответ

2

Кажется, Excel объявляет "definedName" в workbook.xml для сортировки для работы.

Создается один Excel:

...
</sheets>
<definedNames>
    <definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">Sheet1!$D$7:$G$7</definedName>
</definedNames>
...

Использование Open XML Sdk для имитации этого поведения, похоже, делает трюк:

...
worksheet.Append(new AutoFilter {Reference = "B6:BA6"});

var definedNames = new DefinedNames();
var definedName = new DefinedName
{
    Text = "YourSheetName!$B$6:$BA$6",
    Name = "_xlnm._FilterDatabase",
    LocalSheetId = 0,
    Hidden = true,
};
definedNames.Append(definedName);
spreadsheetDocument.WorkbookPart.Workbook.Append(definedNames);
...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню