Dot-Net

EPPlus 和 ClosedXML 庫在處理 OpenXML 方面有什麼區別?[關閉]

  • May 8, 2012

我試圖在 ClosedXML、EPPlus 和可能的 SpreadsheetLight 之間進行選擇。我可以考慮哪些原因來選擇其中一個而不是其他的?

開源:你看過EPPlus嗎?

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

許可證:~~GNU 圖書館通用公共許可證 (LGPL)。~~Polyform 非商業許可證 1.0.0

過去一周我一直在評估 EPPlus、ClosedXML 和 SpreadsheetLight。這三個都是非常棒的庫,可以輕鬆使用極其複雜的 OpenXML。我決定使用 EPPlus 的原因如下:

  • 最初,我打算使用 ClosedXML。它有很好的文件,對象結構對我來說很有意義。雖然我有一些圖表要求,但截至目前,ClosedXML 沒有任何圖表功能。
  • 然後我偶然發現了 SpreadsheetLight,它也有很好的文件並且支持一些圖表。我也喜歡作者的態度和他對產品的承諾。但是,該項目建構在 OpenXML 2.0 SDK 之上,而不是 2.5,這對我來說是一個交易破壞者,因為我希望在庫不能完全滿足我的需要的情況下能夠靈活地直接使用 OpenXML。我的項目針對 excel 2013,所以我想使用最新的 SDK。 …更新!有關更多資訊,請參閱下面 ErrCode 的評論…
  • 最後,我遇到了 EPPlus,它具有良好的文件並支持圖表。它的下載次數比其他兩個要多得多,這讓我知道其他人正在使用它,並且社區似乎在該項目周圍很活躍,這給了我一些安全感。他們目前還處於第 4 版的 beta 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");
   }

引用自:https://stackoverflow.com/questions/10501528