EPPlus导出Excel感觉很不错~~~
前言
导出成为很多系统的必备功能,之前分享过导出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感觉很不错~~~相关推荐
- C# 使用Epplus导出Excel [4]:合并指定行
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- .NetCore+EPPlus导出Excel报表
.NetCore+EPPlus导出Excel报表 适用于跨平台部署 NuGet引入EPPlus.Core 定义公共调用方法 完成调用 NuGet引入EPPlus.Core 因为本人使用的框架是.Net ...
- epplus保存为流_通过EPPlus导出Excel文件
小弟刚刚走上工作岗位不久,工作中常常遇到要导出Excel的情况,但感觉两种常见的导出方式(一种是通过GridView,另一种是通过微软的COM组 件)都不是很理想,前者导出的灵活度太低,后者又常常出现 ...
- C# EPPlus导出EXCEL,并生成Chart表
一 在negut添加EPPlus.dll库文件. 之前有写过直接只用Microsoft.Office.Interop.Excel 导出EXCEL,并生成Chart表,非常耗时,所以找了个EPPlus ...
- 学校BBS上C版总结的月经贴,感觉很不错
所谓"月经题"就是那些几乎隔段时间就会被问到的常见问题,所以觉得有必要总结出来 一些常见的放到置地文章中! 1.首当其冲的就应该是类似对:i+++i 这种类似表达式求值的 ...
- 一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发
六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter ...
- 给大家推荐一款绿色软件,感觉很不错
这是一款模拟键盘音效的小插件,如果你使用的不是机械键盘,还想找到机械键盘的感觉,可以试试这款插件,不光可以模拟机械键盘,还可以模拟打字机等音效,在打字的时候还是挺有感觉的. 我很想买一款机械键盘,不过 ...
- 发现一款感觉很不错的学英语软件:Rosseta Stone
Rosseta Stone,即罗塞塔石碑,不止可以用来学英语,还可以学日语,法语,粤语,汉语等等. 这软件其它不说,至少让我有兴趣学.我现在美国英语1级还没学完,但是学了也有10多个小时了,进度报告里 ...
- QQ在线客服的二种代码,感觉很不错
第一种: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
最新文章
- 我们生活在一个虚拟世界的概率有多大?
- 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...
- Bridging signals(二分 二分+stl dp)
- liferay 采用URL方式传值
- 方法的重载(overload)和重写(override)的区别
- Python 判断语句 if else
- 1-14字串的连接最长路径查找
- 高德定位html,Ionic3 高德Web定位
- MySQL 数据库笔记
- mysql in和like_mysql-一起使用SQL LIKE和IN
- ipad录屏软件_如何在 Mac 上优雅的截图和录屏
- 超市登录系统 java_超市订单管理系统,登录功能实现
- matlab如何做小波包去噪,小波去噪和小波包去噪的对比.doc
- 打开php页面变成下载的解决办法
- 《长安十二时辰》中的计算社会学 | 数据科学赋能人文创新论坛
- 期货连续合约跳空处理
- Aptos Move虚拟机中出现首个严重漏洞
- 用python把图片换成蓝底_用python 将蓝底照片转化为白底照片
- 前端基础知识总结---CSS篇
- Android图像处理之GPUImage for Android