OpenXML的库(替代ClosedXML)[闭]

问题描述 投票:11回答:3

什么是一些扩展的OpenXML(或添加一种抽象层来处理OpenXML)类似ClosedXML库?

我在寻找一个商业软件或免费软件工具,至少1.0版本。

先感谢您。

.net openxml office-2007 closedxml
3个回答
14
投票

开源:你看EPPlus

口号:创建高级的Excel电子表格2007/2010服务器上。

许可:GNU通用公共许可证(LGPL)。


54
投票

我一直在评估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似乎进一步在,改进依据。

Update

另一个非常有用的功能,我发现包含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");
    }

19
投票

SpreadsheetLight,并在内部运行上的Open XML SDK。 MIT许可。免责声明:我写SpreadsheetLight。

© www.soinside.com 2019 - 2024. All rights reserved.