2014-11-05 48 views
1

使用C#與OPENXML,我已生成excel文件的一些數據,我添加自動篩選選項在Excel中使用以下代碼,自動過濾排序崩潰出類拔萃,它是通過使用C#與開放式XML創建的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

好奇,想看看如果這個問題解決了被發現。 – 2015-04-30 13:51:45

回答

1

看來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); 
...