我正在尝试在ClosedXML、EPPlus和可能的SpreadsheetLight之间进行选择。 有哪些原因可以考虑选择其中一个而不是其他呢?
我正在尝试在ClosedXML、EPPlus和可能的SpreadsheetLight之间进行选择。 有哪些原因可以考虑选择其中一个而不是其他呢?
在过去的一周里,我一直在评估EPPlus、ClosedXML和SpreadsheetLight。这三个库都非常棒,可以让使用极其混乱的OpenXML变得轻松。我决定选择EPPlus,原因如下:
最初,我想选择ClosedXML。它有很好的文档,并且对象结构对我来说很有意义。不过我有一些图表要求,而目前ClosedXML没有任何图表功能。
然后我发现了SpreadsheetLight,它也有良好的文档并支持一些图表功能。我也喜欢作者的态度和他对产品的承诺。不过,该项目是建立在OpenXML 2.0 SDK而非2.5之上,这对我来说是个硬伤,因为如果库不能完全满足我的需求,我希望有灵活性直接使用OpenXML。我的项目针对excel 2013,所以我希望使用最新的SDK。
最后,我发现了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");
}
DocumentFormat.OpenXml
(与 ClosedXML 不同)。 - Frank Fajardo您需要从微软下载并安装Open XML SDK 2.0 2.5(版本3.4.5及以上的版本与SDK 2.5兼容),该软件可免费获取
。 - ErrCodeSpreadsheetLight是一个基于Open XML SDK内部运行的电子表格处理程序。采用MIT许可证。 免责声明:我编写了SpreadsheetLight。
开源:您看过EPPlus吗?
口号:在服务器上创建高级的Excel 2007/2010电子表格。
许可证:GNU Library General Public License (LGPL)。Polyform Noncommercial License 1.0.0