一、NPOI:完全免费、商用无任何费用
协议:Apache 2.0(OSI 标准开源协议)
- 个人学习、公司商用、外包、收费系统、服务器部署全部免费,不用买授权、不用注册、不用配置许可证标记;
- 唯一要求:代码 / 发布产物里保留原版权声明,不能抹掉 NPOI 版权;
- 同时支持
.xls(BIFF8)+.xlsx(OOXML),刚好解决你之前「EPPlus 不能导出 xls」的需求; - 无强制代码配置,开箱即用,不会抛授权异常。
二、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,且管控更严:
- 个人非商用:免费,强制写
NonCommercial标记; - 任何商业场景(企业、收费产品、SaaS、内部管理系统):必须付费买商业 License,仅标记没用;
- 商用场景只写
NonCommercial属于违规授权,有法务风险。
一句话总结 EPPlus 版本
表格
| 版本 | 商用免费? | 是否需要代码标记 LicenseContext |
|---|---|---|
| ≤4.x | ✅ 完全免费 | ❌ 不需要,无强制要求 |
| 5~7 | ❌ 商用要付费;仅个人免费 | ✅ 非商用必须写 NonCommercial |
| 8 + 最新 | ❌ 商用必须付费 | ✅ 非商用必须写 NonCommercial |
三、结合你「要导出 xls」场景的选型建议
- 想要完全免费商用、同时读写 xls+xlsx :直接用 NPOI,无授权烦恼;
- 只想用 EPPlus 且公司商用、不想花钱:锁定 EPPlus 4.5.3.3,不用任何授权标记;
- 坚持用 EPPlus 最新版做公司业务:必须官网采购商业授权,仅标记无法规避合规风险;
- 个人学习 / 毕业设计:EPPlus 8+ 加一行
LicenseContext.NonCommercial即可免费使用。
补充关键提醒
- 仅加标记≠获得商用授权:5/6/7/8 版本,公司商用场景只写 NonCommercial 是侵权行为,不能靠一行代码 "洗白";
- EPPlus4.x 无任何授权校验,不会抛 LicenseException,适合不想处理授权代码的商用项目;
- NPOI 全程无授权配置代码,零合规成本,是免费导出 xls 的最优解。