C#读写EXCEL的第三方库——EPPLUS

该文章已生成可运行项目,

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

 一,前言

    在使用C#编程时,我们难免会要对EXCEL表格做读取和导出的操作,但是C#自带的文件读写能力在效率不高的同时,也存在着使用复杂,仅能处理原始数据,缺乏结构化操作能力的问题,为此我将介绍一个C#中专门读写EXCEL的第三方库——EPPLUS。

二,介绍

1,EPPLUS的优势

    EPPlus相较于C#自带的文件读写(如System.IO基础操作或Microsoft.Office.Interop.Excel)具有以下显著优势:

  1. 无需Office依赖
    EPPlus完全独立运行,无需安装Excel或其他Office组件即可处理.xlsx文件,特别适合服务器环境或无界面应用。而Interop.Excel必须依赖本地Office安装,且存在进程残留和许可证问题。

  2. 高性能与低内存占用
    采用Open XML格式直接操作,支持流式读写和大文件处理,内存效率显著高于Interop.Excel的COM调用。测试表明EPPlus处理.xlsx文件的速度比NPOI更快,且内存占用更低。

  3. 功能完整性
    支持单元格样式、公式计算、图表生成、数据验证等高级功能,接近原生Excel操作体验。而基础文件读写仅能处理原始数据,缺乏结构化操作能力。

  4. 跨平台兼容性
    可在Windows/Linux/macOS等环境中运行,与.NET Core/.NET 5+完全兼容,而Interop.Excel仅限Windows平台。

  5. 开发便捷性
    提供直观的API设计(如worksheet.Cells[row,col].Value),相比OpenXML的底层操作或Interop.Excel的复杂对象模型更易上手。

  6. 免费开源
    基于Apache 2.0许可证,商业项目可免费使用,而Interop.Excel需购买Office授权

2,EPPLUS使用的注意事项

    首先,EPPLUS是一个包含商用模式的第三方插件,所以为了避免使用时出现不必要的麻烦,我们需要在使用前进行非商业声明方法如下:


//高版本使用
ExcelPackage.License.SetNonCommercialPersonal("个人姓名");

//低版本使用
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

注意要区分高低版本的声明方式,错误的声明方式不会有任何效果。在这之后,我们还需要生成一个带非商业用途的xlsx表格用于测试,这一步可以通过代码完成,具体代码如下:

using OfficeOpenXml;


ExcelPackage.License.SetNonCommercialOrganization("My Noncommercial Organization");

using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Sheet1");
    worksheet.Cells["A1"].Value = "Hello EPPlus!";
    package.SaveAs(new FileInfo("NewWorkbook.xlsx"));
}

    完成以上事项就可以正常的使用EPPLUS进行学习了。

3,使用方法

using OfficeOpenXml;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        // 设置非商用许可证(按版本使用)
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
        //ExcelPackage.License.SetNonCommercialPersonal("个人姓名");

        // 创建文件对象
        var file = new FileInfo("Sample.xlsx");
        
        using (var package = new ExcelPackage(file))
        {
            // 添加工作表
            var worksheet = package.Workbook.Worksheets.Add("DataSheet");
            
            // 写入表头
            worksheet.Cells["A1"].Value = "ID";
            worksheet.Cells["B1"].Value = "Product";
            worksheet.Cells["C1"].Value = "Price";
            
            // 写入数据行
            worksheet.Cells["A2"].Value = 1001;
            worksheet.Cells["B2"].Value = "Laptop";
            worksheet.Cells["C2"].Value = 899.99;
            
            // 自动调整列宽
            worksheet.Cells[1, 1, 2, 3].AutoFitColumns();
            
            // 保存文件
            package.Save();
            Console.WriteLine("Excel文件已生成: " + file.FullName);
        }
    }
}

以上代码中主要用到了EPPLUS中的以下方法:

1. ExcelPackage核心方法

  • ExcelPackage构造函数
    通过FileInfo参数初始化包对象,管理整个Excel文档的生命周期(需配合using确保资源释放)。

  • Workbook.Worksheets.Add()
    在Workbook中创建新工作表,返回ExcelWorksheet对象。示例中传递表名DataSheet

2. 单元格操作

  • Cells["A1"].Value
    通过A1样式坐标(如"A1")定位单元格并赋值,支持字符串、数字等类型。

  • Cells[row, column, rowCount, columnCount]
    行列索引方式定位区域(如Cells[1,1,2,3]),便于批量操作。

3. 格式调整

  • AutoFitColumns()
    自动调整指定列的宽度以适应内容(示例中调整第1-3列)。

4. 文件保存

  • Save()
    将内存中的ExcelPackage内容写入物理文件,生成.xlsx格式文档。

除了这些方法,EPPLUS中还有更多功能及使用方法,由于篇幅限制,这里不多赘述。

三,总结

以下是C#中EPPLUS库的使用要点总结:

  1. 核心功能
  • 专用于Excel文件读写操作的.NET库
  • 支持xlsx/xlsm格式(Office Open XML标准)
  • 提供单元格操作、公式计算、图表生成等完整功能
  1. 基础使用流程
  • 必须初始化许可证(非商用需设置LicenseContext.NonCommercial
  • 通过ExcelPackage类管理文档
  • 使用Worksheets集合操作工作表
  • 支持A1标记法和行列索引两种单元格定位方式
  1. 特色功能
  • 样式配置:字体/边框/颜色/数字格式等
  • 数据绑定:支持集合数据直接导出
  • 公式支持:原生Excel函数计算
  • 条件格式:数据条/色阶等高级功能
  • 图表生成:柱状图/折线图等15+图表类型
  1. 性能优化
  • 大数据量建议使用LoadFromCollection批量写入
  • 启用计算缓存提升公式性能
  • 使用Dispose释放资源避免内存泄漏
  1. 版本差异
  • v4及以下:LGPL协议可商用
  • v5+:非商用需声明许可证
  • v8+:必须显式设置LicenseContext
  1. 典型应用场景
  • 报表导出
  • 数据迁移
  • 模板填充
  • 数据分析预处理

本文章已经生成可运行项目

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值