EPPlus 和 ClosedXML 库在使用 OpenXML 方面有何区别? [关闭]

2024-01-25

我试图在 ClosedXML、EPPlus 和可能的 SpreadsheetLight 之间进行选择。我可能会出于哪些原因考虑选择其中之一?


过去一周我一直在评估 EPPlus、ClosedXML 和 SpreadsheetLight。这三个库都是非常棒的库,使使用极其复杂的 OpenXML 变得轻而易举。我决定选择 EPPlus 的原因如下:

  • 最初,我打算使用 ClosedXML。它有很棒的文档,并且对象结构对我来说很有意义。我有一些图表需求,但​​截至目前,ClosedXML 没有任何图表功能。

  • Then I stumbled upon SpreadsheetLight which also has good docs and does support some charting. I also like the author's attitude and his commitment to his product. However, the project is built on top of the OpenXML 2.0 SDK, not 2.5, which is a deal breaker for me because I want to have the flexibility to work directly with OpenXML in the event that the library doesn't quite meet my needs. My project is targeting excel 2013 so I want to have the latest SDK to work with. ...Update! See ErrCode's comment below for additional info...

  • 最后,我发现了 EPPlus,它有很好的文档并支持图表。它的下载次数比其他两个要多得多,这给了我一些安全感,因为我知道其他人正在使用它,并且社区似乎围绕该项目很活跃。他们目前还处于版本 4 的测试版 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");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EPPlus 和 ClosedXML 库在使用 OpenXML 方面有何区别? [关闭] 的相关文章

  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 反序列化嵌套类时不需要 xmlns=''

    我在尝试在服务器上序列化类 将其发送到客户端并在目标上反序列化时遇到问题 在服务器上我有以下两个类 XmlRoot StatusUpdate public class GameStatusUpdate public GameStatusUp
  • 将标签文本的一部分设置为粗体

    有什么办法可以使一部分label text要大胆吗 label text asd string 想要string部分要加粗 有可能吗 这怎么办 下面的类说明了如何通过覆盖来做到这一点OnPaint in the LabelWinForms
  • ASP.NET MVC ActionFilterAttribute 在模型绑定之前注入值

    我想创建一个自定义操作过滤器属性 该属性在模型绑定期间可访问的 HttpContext 项中添加一个值 我尝试将其添加到 OnActionExecuting 中 但似乎模型绑定是在过滤器之前执行的 你知道我该怎么做吗 也许模型绑定器中有一个
  • 序列包含多个元素

    我在通过 Linq 获取 RhsTruck 类型的列表并显示它们时遇到一些问题 RhsTruck 只有属性 品牌 型号 序列号 等 RhsCustomer 具有 CustomerName CustomerAddress 等属性 我不断收到错
  • 如何获取可用系统内存的大小?

    C NET 中是否可以获取系统可用内存的大小 如果是的话怎么办 Use Microsoft VisualBasic Devices ComputerInfo TotalPhysicalMemory http msdn microsoft c
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 服务 AddJsonOptions .net core 2.1

    以前使用 net 2 0 您可以通过这种方式添加 json 内容 services AddJsonOptions options gt options SerializerSettings ContractResolver new Came
  • 为什么“扔”和“扔前”在这种情况下有相同的行为?

    我惊呆了 我一直以为throw单独在 catch 块中会抛出手头的异常而不改变堆栈跟踪 但是throw ex在 catch 块中将更改堆栈跟踪以显示源自语句位置的异常 采取以下两个代码块 我希望输出会略有不同 因为使用throw和其他用途t
  • 泛型和实现 IComparable

    我对泛型非常陌生 我正在尝试编写一个简单的类 它将是泛型的 但也允许对字符串成员变量的一些描述进行排序 目前我有一个基本类 但是当我尝试实现接口成员 CompareTo 时 我在顶部收到一个错误 告诉我它尚未实现 这里有什么问题呢 usin
  • Windows 每秒进行一次线程切换的频率是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Windows 通常 每秒进行一次线
  • .NET 中的跟踪中的“开关”和“过滤器”有什么区别?

    NET 中的跟踪中的 开关 和 过滤器 有什么区别 他们似乎以相似的方式工作
  • 如何查看每秒更新的图表中的最后 10 个数据点?

    我有这个代码 private void timer Tick object sender EventArgs e timer Stop for int i 0 i lt TOTAL SENSORS i DateTime d DateTime
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • 检测到 ASP.NET 网页版本冲突:指定版本为“1.0.0.0”,但 ASP.MET MVC 3 中 bin 中的版本为“2.0.0.0”

    安装 microsoft web helper 后出现以下错误 检测到 ASP NET 网页版本冲突 指定版本为 1 0 0 0 但 bin 中的版本为 2 0 0 0 要继续 请从应用程序的 bin 目录中删除文件或删除 web conf
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime

随机推荐

  • 如何让.NET Windows服务在安装后立即启动?

    除了 service StartType ServiceStartMode Automatic 我的服务在安装后不会启动 Solution 将此代码插入我的 ProjectInstaller protected override void
  • 在 Dockerfile 中使用 SSH 进行 Git 克隆

    我正在尝试在 docker 映像中使用 ssh 克隆 git 存储库 并且我想在构建 dockerfile 时执行此操作 我可以使用 git clone https 以及用户名和密码来完成这项工作 但使用 ssh 会失败 我的 docker
  • .htaccess 路由 PHP

    我正在尝试在 htaccess 中为 PHP 编写一些简单的路由 我的文件现在看起来像这样 RewriteEngine On RewriteBase webservices RewriteCond REQUEST FILENAME f Re
  • 如何在 Visual Studio 中正确设置 exe 的入口点?

    我已将入口点设置为 WinMain 但是当我运行该应用程序时 它启动但不显示 然后我必须使用任务管理器将其关闭 这是 WinMain 之前的代码 include
  • 为什么 chrome 会突出显示未在样式中列出或计算的边距

    样式 下没有显示边距样式 并且如您所见 它也没有显示任何正在计算的内容 不知道这里发生了什么 但在将元素的宽度更改为 90 后我注意到了这一点 我正在使用粉底 所以也许它有一些竞争风格 我不是问如何解决我的具体问题 这就是为什么我没有发布代
  • Windows DLL实际上是如何共享的?

    通过检查 Windows 计算机中的几个 DLL 例如 KERNEL32 DLL 我注意到它们的任何部分 甚至只读数据部分 都没有设置 IMAGE SCN MEM SHARED 标志 DLL 是从 dll 文件映射的 因此只有当您读取文件的
  • C++ 变量作用域

    与我的预期相比 我的 C 代码输出不同 我希望了解它是如何执行的 include
  • 如何使用角度2中的管道过滤列表

    你能告诉我如何使用 Angular 2 中的管道来过滤列表吗 https stackblitz com edit angular qvtqeu file src 2Fapp 2Fapp component html https stackb
  • 如何找到2个以上用户的匹配时间间隔

    从给定的不同用户的时间间隔中找到最合适的时间 Rows 5 fid userid FromDateTime ToDateTime flag 62 1 2012 07 18 01 48 20 2012 07 18 02 55 20 1 63
  • SQL 查询不会仅返回一个字段的完整结果

    我在使用 VBA 执行 SQL 查询并将结果复制到 Excel 工作表中时遇到问题 当 sub 执行时 它仅复制 256 倍数的行 因此第 256 512 768 等行是唯一填充到 Excel 中的行 我从数据库复制任何其他字段都没有问题
  • Java 中的延续

    Java 中有没有好的延续性实现 如果是这样 开销是多少 JVM 的设计并没有考虑到这些事情 对吗 那么这种做法是不是有悖常理呢 请参阅 Apache Javaflowhttp commons apache org sandbox java
  • 我可以使用自动映射器将多个对象映射到目标对象吗

    UserAccount objUserAccount null AutoMapper Mapper CreateMap
  • 如何设置 PHP_AUTH_USER

    PHP AUTH USER 为空 并且系统使用Windows登录凭据 我该如何改变它 我想使用用户输入的用户名和密码 See 使用 PHP 进行 HTTP 身份验证 http php net manual en features http
  • 如果实体中没有定义标识符,Hibernate 如何在内部跟踪对象?

    根据 Hibernate 参考文档 标识符属性是严格可选的 你可以把它们放下 并让 Hibernate 在内部跟踪对象标识符 如果实体中没有定义标识符 Hibernate 如何在内部跟踪对象 进一步扩展问题 如果没有标识符 我们如何 loa
  • eval() 可以优化吗?

    eval 更改局部变量的能力给 JavaScript 优化器带来了很大的问题 我读了 javascript权威指南 这本书 eval 可以优化吗 我不明白 这并不是说eval优化 而是那些寻求优化的 JavaScript 引擎被阻止这样做e
  • 对向量的每个元素中的单词重新排序

    我想更改向量中每个元素的词序 具体来说 我想制作另一个向量 其中第一个单词现在是许多长度不同的元素的最后一个单词 Data metadata1 lt c reference1 an organism reference2 another o
  • 如何填写数据安全? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为我的应用填写 Google Play 数据安全表单 我的应用程序使用 AdMob 并且没有其他收集用户信息的库 我该怎么填写呢 对
  • 双击 .jar 文件时“找不到主类”

    首先 我意识到这个问题应该很简单 而且很多人似乎都经历过 但是 看来我的问题可能是slightly与现有职位不同 我正在使用 NetBeans 编译 Java 应用程序 构建完成后 输出将正确进入 dist 文件夹 jar 文件就在那里 如
  • onSaveInstanceState中保存接口(Listener)

    保存实例状态 对于像 Integer Long String 等数据都可以 我只是将其放入包中 并在再次调用 onCreateView 时将其取回 但我的片段也有像下面这样的听众 public class SomeFragment exte
  • EPPlus 和 ClosedXML 库在使用 OpenXML 方面有何区别? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图在 ClosedXML EPPlus 和可能的 SpreadsheetLight 之间进行选择 我可能会出于哪些原因考虑选择其中之一