C#.NET操作EXCEL的库:NPOI全免费,EPPlus个人学习免费

一、NPOI:完全免费、商用无任何费用

协议:Apache 2.0(OSI 标准开源协议)

  1. 个人学习、公司商用、外包、收费系统、服务器部署全部免费,不用买授权、不用注册、不用配置许可证标记
  2. 唯一要求:代码 / 发布产物里保留原版权声明,不能抹掉 NPOI 版权;
  3. 同时支持 .xls(BIFF8) + .xlsx(OOXML),刚好解决你之前「EPPlus 不能导出 xls」的需求;
  4. 无强制代码配置,开箱即用,不会抛授权异常。

二、EPPlus 分版本,免费规则严格区分(核心)

1)EPPlus 4.x 及更早(4.5.3.3 最后稳定版)

永久免费商用,无付费门槛

  • 协议:LGPLv3;
  • 公司业务、收费系统、后台导出随便用,不需要购买授权、不需要写 LicenseContext 标记
  • 缺点:官方不再维护,缺少新版功能、部分 bug 不修复,高版本.NET 兼容性一般;
  • NuGet 安装指定版本:Install-Package EPPlus -Version 4.5.3.3

2)EPPlus 5 / 6 / 7(2020--2023)

协议:Polyform Noncommercial 1.0

  • 非商用(个人学习、开源公益项目):免费,但必须代码标记 LicenseContext.NonCommercial,否则 Debug 直接抛授权异常;

  • 商用(公司系统、收费软件、内部业务报表):必须购买商业授权,仅加标记不买授权属于侵权;

    // 非商用必须加这句,不然报错
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

3)EPPlus 8.x 及最新版(当前最新)

规则同 5--7,且管控更严:

  1. 个人非商用:免费,强制写 NonCommercial 标记;
  2. 任何商业场景(企业、收费产品、SaaS、内部管理系统):必须付费买商业 License,仅标记没用
  3. 商用场景只写 NonCommercial 属于违规授权,有法务风险。

一句话总结 EPPlus 版本

表格

版本 商用免费? 是否需要代码标记 LicenseContext
≤4.x ✅ 完全免费 ❌ 不需要,无强制要求
5~7 ❌ 商用要付费;仅个人免费 ✅ 非商用必须写 NonCommercial
8 + 最新 ❌ 商用必须付费 ✅ 非商用必须写 NonCommercial

三、结合你「要导出 xls」场景的选型建议

  1. 想要完全免费商用、同时读写 xls+xlsx :直接用 NPOI,无授权烦恼;
  2. 只想用 EPPlus 且公司商用、不想花钱:锁定 EPPlus 4.5.3.3,不用任何授权标记;
  3. 坚持用 EPPlus 最新版做公司业务:必须官网采购商业授权,仅标记无法规避合规风险;
  4. 个人学习 / 毕业设计:EPPlus 8+ 加一行 LicenseContext.NonCommercial 即可免费使用。

补充关键提醒

  • 仅加标记≠获得商用授权:5/6/7/8 版本,公司商用场景只写 NonCommercial 是侵权行为,不能靠一行代码 "洗白";
  • EPPlus4.x 无任何授权校验,不会抛 LicenseException,适合不想处理授权代码的商用项目;
  • NPOI 全程无授权配置代码,零合规成本,是免费导出 xls 的最优解。