前言

导出成为很多系统的必备功能,之前分享过导出PDF的功能,这里来分享一下Excel的导出;

提到Excel导出,NPOI肯定是很多小伙伴的首选,在以往的项目中也用其完成了很多导出需求;对于NPOI,个人感觉使用还是相对比较复杂,填充数据,单元格格式或样式,公式计算等,所以就想着换个库试试;和同事简单的沟通,EPPlus 和 Magicodes.IE 感觉都不错,但从Nuget包的下载量来看,EPPlus明显更胜一筹,而且在当时的业务需求中EPPlus更加合适,所以接下来的分享主要针对EPPlus。

注:EPPlus从版本5开始,如果使用就要求需要商业许可啦,但从业务功能来看,5之前的版本对于绝大多数业务场景够用啦,别排斥,看看之前的版本下载量:

不扯那么多啦,如果小伙伴了解更多关于EPPlus信息,github地址为:https://github.com/JanKallman/EPPlus/wiki。

接下来以平时常用功能为主,和小伙伴分享一下使用。

正文

这里新建一个API项目,针对每个功能单独一个接口进行演示,引入的EPPlus版本为4.5.3.3。

1. 数据填充;

EPPlus数据填充很简单,不需要创建行、列,直接定位到单元格赋值即可。两种定位单元格方式,如下:

  • 通过具体行和列的来定位

    这种方式定位比较灵活,也是用的比较多的。

    代码实现如下:

    运行效果:

  • 通过单元格标识来定位

    通过单元格标识进行定位,如上图,图中Excel的列标识为字母,行标识为数字,所以第一个单元格的定位可以对应为A1,第二个单元格为B1,以此类推。

    代码实现:

    运行效果,同样在浏览器中输入对应的接口地址,导出Excel:

2. 公式自动计算;

在以往导出的操作中,关于计算和汇总的数据很多都是在程序中先算好,然后再填充到单元格中,其实使用Excel公式超级方便;

代码实现:

运行效果:

3. 样式设置;

  • 单个单元格指定样式

    代码实现:

    效果如下:

    虽然效果也能实现,但每一个单元格都指定一遍,太麻烦了;下面的范围设置就比较给力;

  • 范围指定样式

    代码实现:

    运行效果:

  • 设置公共样式,如果所有数据都需要统一的对齐样式,所有单元格都需要边框,可以统一设置;

    公共样式直接针对worksheet中的所有单元格设置即可;

    代码实现:

    运行效果:

4. 合并单元格;

导出数据时,合并单元格是常有的事,我平常用将其分为列合并和行合并两种:

  • 列合并

    在我日常开发中,列合并通常在表头用的比较多,所以算是比较固定的格式,直接指定合并的范围即可;

    代码实现:

    调用:

    运行效果:

    当然也可以根据需求,动态设置行进行合并;

  • 行合并

    行合并主要是针对数据,当连续单元格值相等的情况,通常会要求进行行合并;如上图中前两行的第一个单元格数据都为111,需将其合并。

    代码实现:

    调用:

    运行效果:

5. 自适应列宽和自适应内容

当单元格内容比较多时,通常会用到以下两种方式,如图:

  • 自适应列宽:将字体缩小填充到单元格,单元格列宽不变;

  • 自适应内容:单元格根据内容填充,内容多宽就显示多宽;

代码实现如下:

运行效果如下:

6. 大数据导出

有些导出需求,需要导出大量的数据,如果通过上述内存的方式导出,可能会因为数据量大导致数据处理超时或内存泄露导致导出异常,通常这种需求,会采用异步的方式导出数据;大概步骤如下:

  • 用户点击导出操作,后台生成一条导出记录,即导出任务,包括导出时选择的条件、导出状态等信息;

  • 通过消息队列或者是后台任务的形式,获取到导出任务,得到导出条件,通过后台任务进行导出操作;

  • 保存对应文件,将导出后台任务状态改为已完成;

  • 用户就可以下载生成的文件;

保存文件的代码实现:

将生成的文件和任务、站点关联起来就可以根据任务下载啦;这里就不演示了,和上传图片一样道理。

演示的代码地址:https://github.com/zyq025/DotNetCoreStudyDemo/tree/main/ExportExcelDemo

总结

关于使用EPPlus导出Excel的常用功能演示就分享到这了;当然也可以进行导入的操作,只是读取数据而已,这个就留给小伙伴自己实操练习啦。

EPPlus导出Excel感觉很不错~~~相关推荐

  1. C# 使用Epplus导出Excel [4]:合并指定行

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  2. .NetCore+EPPlus导出Excel报表

    .NetCore+EPPlus导出Excel报表 适用于跨平台部署 NuGet引入EPPlus.Core 定义公共调用方法 完成调用 NuGet引入EPPlus.Core 因为本人使用的框架是.Net ...

  3. epplus保存为流_通过EPPlus导出Excel文件

    小弟刚刚走上工作岗位不久,工作中常常遇到要导出Excel的情况,但感觉两种常见的导出方式(一种是通过GridView,另一种是通过微软的COM组 件)都不是很理想,前者导出的灵活度太低,后者又常常出现 ...

  4. C# EPPlus导出EXCEL,并生成Chart表

    一  在negut添加EPPlus.dll库文件. 之前有写过直接只用Microsoft.Office.Interop.Excel 导出EXCEL,并生成Chart表,非常耗时,所以找了个EPPlus ...

  5. 学校BBS上C版总结的月经贴,感觉很不错

    所谓"月经题"就是那些几乎隔段时间就会被问到的常见问题,所以觉得有必要总结出来  一些常见的放到置地文章中!     1.首当其冲的就应该是类似对:i+++i 这种类似表达式求值的 ...

  6. 一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter ...

  7. 给大家推荐一款绿色软件,感觉很不错

    这是一款模拟键盘音效的小插件,如果你使用的不是机械键盘,还想找到机械键盘的感觉,可以试试这款插件,不光可以模拟机械键盘,还可以模拟打字机等音效,在打字的时候还是挺有感觉的. 我很想买一款机械键盘,不过 ...

  8. 发现一款感觉很不错的学英语软件:Rosseta Stone

    Rosseta Stone,即罗塞塔石碑,不止可以用来学英语,还可以学日语,法语,粤语,汉语等等. 这软件其它不说,至少让我有兴趣学.我现在美国英语1级还没学完,但是学了也有10多个小时了,进度报告里 ...

  9. QQ在线客服的二种代码,感觉很不错

    第一种: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

最新文章

  1. 我们生活在一个虚拟世界的概率有多大?
  2. 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...
  3. Bridging signals(二分 二分+stl dp)
  4. liferay 采用URL方式传值
  5. 方法的重载(overload)和重写(override)的区别
  6. Python 判断语句 if else
  7. 1-14字串的连接最长路径查找
  8. 高德定位html,Ionic3 高德Web定位
  9. MySQL 数据库笔记
  10. mysql in和like_mysql-一起使用SQL LIKE和IN
  11. ipad录屏软件_如何在 Mac 上优雅的截图和录屏
  12. 超市登录系统 java_超市订单管理系统,登录功能实现
  13. matlab如何做小波包去噪,小波去噪和小波包去噪的对比.doc
  14. 打开php页面变成下载的解决办法
  15. 《长安十二时辰》中的计算社会学 | 数据科学赋能人文创新论坛
  16. 期货连续合约跳空处理
  17. Aptos Move虚拟机中出现首个严重漏洞
  18. 用python把图片换成蓝底_用python 将蓝底照片转化为白底照片
  19. 前端基础知识总结---CSS篇
  20. Android图像处理之GPUImage for Android

热门文章

  1. Yahoo网站性能最佳体验的34条黄金守则
  2. JS图片放大查看效果!
  3. 一步一步SharePoint 2007之四十三:实现自定义Workflow(2)——设置配置文件
  4. 如何在Apache环境下配置Rewrite规则
  5. 关于 extern C的说明
  6. MySQL For RedHat Linux(源码安装,附安装包)
  7. ExtJs Grid分页时序号自增的实现,以及查询以后的序号的处理
  8. 如何将iPhone应用程序从应用程序库移动到主屏幕
  9. 如何在Outlook 2013中管理附件
  10. app启动广告页的实现,解决了广告图片要实时更新的问题