导出Excel表格

导出Excel表格

开发工具与关键技术:MVC 创建Excel
作者:郭海明
撰写时间:2019年6 月7 日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  当我们实现在页面上显示出数据。如果浏览页面的用户想要将这些数据下载到本地的Excel文件时,我们就要实现将这些数据以Excel文件格式下载,就要去控制器写导出Excel的方法。
  首先我们在写导出Excel文件的方法时,先在解决方案视图的引用里面田间一个NPOI文件流,如果不引用这个NPOI文件流,就创建不了接下来的Excel文件格式。所以我们首先就要引用这个文件流。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150852469.png)
这样我们就可以用NPOI创建Excel,
首先我们创建一个方法
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150913856.png)
并且添加上需要用的的参数,接着在try里面实例化 NPOI里面的方法。实例化完创建一个对象工作簿。然后我们需要再次查询页面上需要显示的数据。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150920840.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1NDAyNw==,size_16,color_FFFFFF,t_70)
声明局部变量,将数据需要用的表进行连接,连接完给这个表一个根据键按降序对序列的元素排序。然后将页面需要用的的数据库数据获取出来,并存储到自己创建的类COP里面。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150928208.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1NDAyNw==,size_16,color_FFFFFF,t_70)
将获取到的数据放到局部变量listStatementExcel里面然后给Excel表格设置表头内容,这里需要跟页面的数据表格的顺序保持一致,然后我们就可以给sheet的每行进行添加数据。通过for循环  for(int i = 0; i < listStatementExcel.Count; i++),将前面局部变量listStatementExcel里面的数据同坐i++的自增方式,获取到每一条数据。在for里面,
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150936117.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU1NDAyNw==,size_16,color_FFFFFF,t_70)
通过i+1的方法给sheet添加每一行,根据前面设置的表头序号,按照表头的类型相对应的数据进行绑定。意思就是每当for循环一条listStatementExcel数据时,listStatementExcel数据条数会和行数相对应。这样实现了,有多少条数据,就会增加多少行数据。设置完表头和表头的内容 ,
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150943685.png)
就将文件输出,输出的格式为字符串里面输入Excel文件名称,并在后面添加上实时创建Excel文件时的时间。然后将Excel转化为文件流格式,首先定义一个文件流,然后将工作薄添加进文件流里面,输出之前调用的Seek(偏移量,游标位置)方法:获取文件流的长度,获取完之后,创建Excel就完成了,先在只需要return Fill将数据返回,那么控制器里面的创建Excel就算创建完了。
   控制器写完创建Excel文件之后,先在就要回到视图去写调用控制器写的这个创建Excel文件的方法了。首先需要在导出Excel按钮里面加一个onclick名称为exportdata,用于写点击导出实现调用Excel的方法。
   添加onclick之后,就可以到<script>里面去写一个该的方法。
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150951636.png)
 方法里面获取到筛选数据的下拉框的ID,赋值给var的名称,这时候我们还不知道数据是否经过下拉框筛选过,如果数据经过筛选,那么它的下拉框就会有值,那么我们就可以用if判断第一个下拉框的字符串是否为空的字符串和是否为空,如果判断条件成立的话,就说明数据还没有经过下拉框的筛选,就给该下拉框赋值为0.
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190606150956977.png)
然后在if里面再嵌套一个if判断,判断第一个下拉框的值是否为等于0,因为前面如果下拉框是空的话就赋值为0,也就是说这里判断第一个下拉框是否为空,如果第一个下拉框为空的话,就要通过layer.confirm添加一个选择,并提示用户是否需要打印全部的数据,是否需要再通过下拉框筛选一下数据。如果用户仍然选择继续,那就给用户调用控制器写好的导出Excel方法。如果第一个判断下拉框不为空,那么就就可以直接调用控制器写好的导出Excel方法,不弹出提示用户是否筛选。这样一个导出Excel数据就写好了,用户只需要点击一下导出按钮,就可以下载导出Excel的数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值