自动筛选排序使excel崩溃,excel是通过使用C#和Open xml excel创建的
本文关键字:excel Open xml 创建 筛选 排序 崩溃 | 更新日期: 2023-09-27 18:29:18
使用C#和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停止工作"。。。
Excel似乎在workbook.xml中声明了一个"definedName",以便排序工作。
Excel生成的文件如下所示:
...
</sheets>
<definedNames>
<definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">Sheet1!$D$7:$G$7</definedName>
</definedNames>
...
使用OpenXMLSdk来模仿这种行为似乎可以达到目的:
...
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);
...