自动筛选sorting崩溃excel,这是使用C#打开xml excel创build的

使用C#与openxml,我已经生成了一些数据的Excel文档,我添加了使用下面的代码在Excel中的autofilter选项,

string reference= "B6:BA6"; AutoFilter autoFilter1 = new AutoFilter() { Reference = reference }; Worksheet sheet1 = new Worksheet(); sheet1.Append(sheetData); sheet1.Append(autoFilter1); 

filter工作正常,我试图在新创build的Excel中使用该自动筛选器选项的数据进行sorting,但它崩溃了整个Excel,它显示错误消息,如“Excel停止工作”…

看来Excel在workbook.xml中声明了一个“definedName”,以便sorting工作。

一个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); ...