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的常用功能演示就分享到这了;当然也可以进行导入的操作,只是读取数据而已,这个就留给小伙伴自己实操练习啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[文摘]标准的软件开发过程

为什么80%的码农都做不了架构师?>>> 软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达 14 种之多,在每个阶段需要编写哪些文件,以及这些文件的主要内容见下: 1.可行性与计划研究阶段 可行性…

python新闻评论分析_从新闻文章中提取评论

我的问题和这里问的问题类似:https://stackoverflow.com/questions/14599485/news-website-comment-analysis我试图从任何新闻文章中摘录评论。E、 g.我有一个新闻网址:http://www.cnn.com/2013/09/24/politics/un-obama-foreign-policy/我尝试在python中…

走进乔布斯的大脑

全世界有3.14 % 的人已经关注了数据与算法之美你永远也无法走进苹果教父乔布斯神秘的大脑,但下面的图可以让你多靠近了解他一点。人们都想走进乔帮主的大脑里看看他的想法,可惜他太难以捉摸了。但是,有个有趣的方法,至少可以让人们…

如何在没有 System.Drawing.Common 的情况下使用 C# 获取图片格式

之前写过一篇博文,用来获取图片的正确格式。博文所示代码一直工作良好,直到今天在将程序部署到阿里云函数计算时,发生了以下报错:System.Drawing is not supported on this platform.这表明我们不能在阿里云函数计算服务器上使用 …

Ant通配符

我们常用的匹配模式有ANT模式,比如acegi可以用PATTERN_TYPE_APACHE_ANT来使用ANT匹配模式,那什么是ANT匹配模式呢。ANT通配符有三种:通配符 说明 ? 匹配任何单字符 * 匹配0或者任意数量的字符 ** 匹配0或者更多的目录 例子:UR…

java二叉树的深度优先遍历_二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式...

1 packageSolution;23 importjava.util.LinkedList;4 importjava.util.Queue;5 importjava.util.Stack;678 public classBinaryTree {910 //二叉树节点11 public static classBinaryTreeNode {12 intvalue;13 BinaryTreeNode left;14 BinaryTreeNode right;1516 public BinaryT…

NET问答: 如何给 ASP.NET Core 配置指定端口 ?

咨询区 Drew Noakes:我是 ASP.NET Core 方面是新人,我发现程序默认的端口是 5000,因为要正式发布,所以希望把程序的端口改成 80,请问我该如何配置自定义端口呢 ?回答区 Kvin Chalet:在 ASP.NET …

硬货 | 一片小小的薄膜,却可以粘住全世界!

延续“设计激发积极生活”的理念,在这个中秋,GYMLIVING特别推出月亮概念新产品,在便利生活的同时,为你带来一份浪漫和惊喜!说起月亮,除了阴晴圆缺,月球漫步更让它成了浪漫的代名词。有公司正计划…

使用域超级管理员打开Exchange 2010发现没有权限

1.使用administrator管理员打开EMC却报没有权限。 2.发现此问题,系邮件服务器本身上安装了outlook软件,并配置了使用非administrator账户收信。并有做了Windows保存了用户凭据,造成帐号使用上的混乱,导致连接Exchange服务器时使用…

C# 将多个图片合并成TIFF文件的两种方法

最近需要用到TIF格式的文件,研究了一段时间,终于有点结果了,发现两种方式,第一种是使用BitMiracle.LibTiff.NET,直接在Nuget上安装即可,第二种是使用RasterEdge.DocImageSDK,要从官网下载dll包第…

高等数学、线性代数、概率论与数理统计、几何学这些知识可以用来干什么?主要应用有哪些?...

全世界有3.14 % 的人已经关注了数据与算法之美知乎谢漠烟其他三项,不研究少数工科确实没用,但概率统计真乃应用数学之王。鄙人学业从数学院开始,以经济学院结束,现在在证券公司做苦逼行业研究,深有体会。概率统计抛开了…

HDU 2896 病毒侵袭【AC自动机】

Problem Description当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~但网路上总有那么些网站&#xf…

.NET 中安全高效跨平台的模板引擎 Fluid 使用文档

Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的主要构成部分,并且被用于加载店铺系统的动态内容。它是一种安全的模板语言,对于非程序员的受众来说也非常容易理解。Fluid 是一个基于 Liquid 模板语言的开源…

风靡全球的人工智能,如何赶上这班车?

目前,机器学习的使用日渐成为趋势。作为人工智能的核心,机器学习是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说…

java spark读写hdfs_Spark读取HDFS数据输出到不同的文件

最近有一个需求是这样的:原来的数据是存储在MySQL,然后通过Sqoop将MySQL的数据抽取到了HDFS集群上,抽取到HDFS上的数据都是纯数据,字段值之间以\t分隔,现在需要将这部分数据还原为json格式的,因为这样做的原…

15个创意的电梯广告

如果你走进任何一个城市,几乎每一个地方有电梯,但是你发现具有创意的广告电梯了吗,分享给大家15个不同城市的创意的电梯广告,作为设计师可以帮助你 Accor Air Asia Becel Body World Coke Zero Consol Energy Fiat Punto Forklift…

揭秘全球开发最新趋势!JS开发者达1380万,C#超越PHP,Rust增长最快

文 | 白开水出品 | OSC开源社区(ID:oschina2013)研究公司 SlashData 最新发布的”State of the Developer Nation“第 20 版报告指出,全球开发者社区在过去六个月中的经历了巨大的增长。据估计,截至 2021 年第一季度&a…

怎样判断漂亮女孩是不是单身的?

全世界有3.14 % 的人已经关注了数据与算法之美不解风情的死理性派们在情感生活中不免会遇到这样悲催的一幕:偶然间遇到一位心仪的漂亮女孩,从此日思夜想,废寝忘食,开始了漫长的暗恋之旅。等到一日,在无尽的纠结中&…

java开源cad_寻找 AutoCAD 替代品,5款免费开源 CAD 软件推荐

FreeCADFreeCAD 是一种通用的3D CAD建模。完全开源(LGPL许可证)FreeCAD 直接的目的是在机械工程和产品设计,也适合在更广泛的用途,如建筑行业或其他工程专业,工程相关领域。FreeCAD 全平台通用,能完美工作在 Windows、Linux 和 ma…

JavaScript对SEO的影响及解决之道

不只是Google,yahoo在官方文档中也有类似的夸大:  尽量使用搜索引擎能够识别的文本信息,防止过多的JavaScript、Cookie、框架、DHTML 或 Flash 等繁杂技术。  http://help.cn.yahoo.com/answerpage_2911.html  百度虽然没有明确的说明&…