2012-05-08 42 views
10

與ClosedXML相似,某些庫是如何擴展OpenXML的(或者爲OpenXML添加一種抽象層)?OpenXML庫(ClosedXML的替代品)

我在尋找一個商業或免費軟件工具,至少1.0版本。

預先感謝您。

+3

我知道這是一個老問題,但是否有任何特別的原因,你不滿意於ClosedXML?是否更需要一個主要版本號的政治事物,還是您覺得ClosedXML不夠穩定? – jamiebarrow

+0

我的問題與ClosedXML是它只是在許多情況下無法正常工作。用數組公式引用單元格,表格公式和SUMIF是完全分解庫的一些事情。 – Vedran

回答

14

開放源代碼:你看過EPPlus

口號:在服務器上創建高級Excel 2007/2010電子表格。

許可:GNU庫通用公共許可證(LGPL)。

+0

與EPPlus我們可以生成或寫入電源點文件中的數據或圖表?還是僅僅限於excel? – Mou

+1

是的,你可以創建PowerPoint文件。我們最終這樣做的方式是使用特定的模板文件,然後使用EPPlus操作它們。 –

16

SpreadsheetLight,它在Open XML SDK上內部運行。 MIT許可證。 免責聲明:我撰寫了SpreadsheetLight。

+1

不錯的圖書館!我想知道性能。與ClosedXML,EPPlus或其他圖書館(商業)GameBox.Spreadsheet或SpreadsheetGear 2010相比,它看起來如何?我知道SpreadsheetLight是免費的圖書館,但想知道它的速度:) – Misiu

41

過去一週我一直在評估EPPlus,ClosedXML和SpreadsheetLight。所有這三個都是非常棒的庫,它們讓這些極其複雜的OpenXML變得輕而易舉。我決定與EPPlus一起出於以下原因:

  • 最初,我打算使用ClosedXML。它有很好的文檔,對象結構對我很有意義。儘管目前我有一些圖表需求,但​​ClosedXML沒有任何圖表功能。

  • 然後我偶然發現了SpreadsheetLight,它也有很好的文檔,並支持一些圖表。我也喜歡作者的態度和他對產品的承諾。然而,該項目建立在OpenXML 2.0 SDK的基礎上,而不是2.5,這對我來說是一個難題,因爲我希望在庫不能滿足我的需求的情況下能夠靈活地直接使用OpenXML。我的項目針對的是2013年的Excel,因此我希望能夠使用最新的SDK。

  • 最後,我遇到了EPPlus,它具有良好的文檔和支持圖表。它的下載次數比其他兩次下載的次數多得多,這讓我知道其他人正在使用它,並且社區似乎對項目很活躍。他們目前也在版本4的測試版2中,這聽起來很有希望與其他人說。我也得到EPPlus有良好表現的要點(不是其他人肯定不好),而即將到來的第4版似乎正在進一步改進。


更新

另一個非常有用的功能,我發現包含EPPlus是如何暴露的工作表的各個部分的XML。如果EPPlus不支持某項功能,則仍然可以編輯XML(在某些情況下)以獲得所需的輸出。例如,如果您有數據透視表圖表並希望實現多層次的標籤,您可以執行以下操作:

private void EnableMultiLevelLabels(ExcelChart chart) 
    { 
     var element = chart.ChartXml.GetElementsByTagName("c:catAx")[0]; 
     if (element == null) 
      return; 

     var multiLevelLabelNode = element.AppendChildElementNode("c:noMultiLvlLbl"); 
     if (multiLevelLabelNode != null) 
      multiLevelLabelNode.AppendNodeAttribute("val", "0"); 
    } 
+1

這樣一個不錯的答案! – nawfal

+0

@nawfal:謝謝! – Chris

+0

我同意。精彩的回答!由於對象模型,我想使用ClosedXML,但是這個答案完全影響了我。我想知道EPPlus是否可以採用ClosedXML的對象模型?你怎麼看? –