自动筛选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); ...