• 使用EPPlus导出EXCEL文件


    .NET平台有不少用于Excel文件读写的第三方库,最早使用的是NPOI。

    后面接触了MiniExcel,大部分使用场景下,发现用起来更加简单。所以后来很多项目都使用MiniExcel。

    这几天在弄一个数据录入的小工具,动态生成模板,然后按照模板录入数据。

    因为记录的字段都是根据模板动态生成的,包括数据,其实是一个字段一个类地保存的。

    然后导出的数据的时候,想着可以一行一条记录或者一列一条记录两种模式。

    发现去实现这个功能的时候,MiniExcel就不是很方便了。

    包括NPOI,基本上的思路都是先产生一个Row对象,再指定这个Row对象每个Column的值。

    特别是一列一条记录的时候,要先new一个Row对象的模式,就非常不方便。

    所以就想到用EPPlus来实现,因为EPPlus可以直接指定某行某列Cell的值,并不需要在指定Cell的值之前,要先去创建Row对象。

    安装:

    Install-Package EPPlus

     使用前需要指定LicenseContext,NonCommercial为非商用。

    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

    参考代码:

    using (var p = new ExcelPackage())
    {
        var ws = p.Workbook.Worksheets.Add("Sheet1");
        var _fieldFormat = DbHelper.Select<FieldInfo, int>(s => s.TemplateGuid == SelectedItem.TemplateGuid, s => s.OrderID);
        var rowIndex = 1;
        foreach (var item in _fieldFormat)
        {
            ws.Cells[rowIndex++, 1].Value = item.FieldName;
        }
    
        var columnIndex = 2;
        var records = DbHelper.Select<RecordInfo>(s => s.DataGuid == SelectedItem.DataGuid);
        foreach (var record in records)
        {
            var items = DbHelper.Select<FieldDataInfo>(s => s.RecordGuid == record.RecordGuid);
            rowIndex = 1;
    
            foreach (var item in items)
            {
                ws.Cells[rowIndex++, columnIndex].Value = item.FieldValue;
            }
            columnIndex++;
        }
    
        p.SaveAs(new FileInfo(fileName));
        Process.Start("explorer.exe", "/select," + fileName);
    }
  • 相关阅读:
    java学习笔记 --- 面向对象3
    java学习笔记 --- 面向对象2
    Idea代码生成插件制作
    口罩检测比赛
    公开人脸检测库dlib的使用介绍
    VS工程中image watch的安装和卸载
    mysql导入导出sql文件
    git 本地项目推送至远程仓库
    mysql 操作提示 1366 Incorrect string value
    python入门
  • 原文地址:https://www.cnblogs.com/wzwyc/p/16249561.html
Copyright © 2020-2023  润新知