导出数据到Excel表格

开发工具与关键技术:VS+导出数据
作者: 李伙
撰写时间: 2019年5月3日

在学习MVC过程中,我们可以在vs中写一个方法,就可以导出我们需要的数据,即导出数据到Excel表格,这样子就节省我们很多的时间了,不用因为需要哪些数据而一条一条的写入Excel表格了。导出数据到Excel表格也可以利用条件筛选来筛选出我们需要的数据。下面为一个例子,先看js部分的代码:
在这里插入图片描述
如图所示:先要获取查询条件,再判断获取的条件是否为空,为空就让其等于0,这一步操作主要是条件的筛选,可以筛选出我们需要的数据,这样我们就不会选择到我们不需要的数据。“layer.confirm()”是layui插件里面的一个询问框,是用来提醒用户是否要执行某个操作的,这里是提醒用户是否导出当前数据到Excel表格,是就点击确定,否则就重新筛选数据再导出。
因为这里用到layui插件,因此在使用前要先引用layui插件里面的css文件以及js文件,然后在“$(function(){});”里面加载&&初始化layui模块,否则会报错。加载&&初始化layui模块前要先定义一个全局变量,具体格式如下:
在这里插入图片描述
“function(){}”为回调函数,在回调函数里面写一个“window.open()”方法,这里用到window 对象,window 对象表示浏览器中打开的窗口,“open()”是一个方法,“open()”表示打开一个新的浏览器窗口或者查找一个已命名的窗口。这里很明显是一个已命名的窗口,然后在已命名的窗口后面拼接上筛选条件,拼接时一定不能漏掉“? = &”这些字符,不然会报错。
写完js部分的代码后,就到控制器写控制器的代码。
在这里插入图片描述
如图所示:第一步时先查询出需要导出的数据,这里用到了linq查询中的group by分组查询。
上图是Linq使用group by分组按UserID用户ID查询出用户最高的成绩信息。group by分组语法:group tbAchievement by tbAchievement.UserID into tbStudent表示对tbAchievement按UserID字段进行分组,其结果命名为tbStudent一旦重新命名,tbAchievement的作用域就结束了,所以,最后select时,只能select tbStudent。
Key属性:返回进行分组的关键字段的值。
OrderByDescending:表示根据键按降序对序列的元素排序。如根据学生的成绩从大到小来进行排序。
FirstOrDefault:表示返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。如学生的成绩从大到小进行排序后,返回学生最高成绩的成绩ID。
查询出数据后就要对数据进行条件的筛选,不然筛选不出我们需要的数据。条件筛选数据如下:
在这里插入图片描述
这里条件筛选用到了Lambda表达式,Lambda表达式的运算符是“=>”它的左边是参数,右边是表达式或者语句。Lambda表达式可以与linq查询互换,即Lambda表达式可以转化为linq查询,linq查询可以转化为Lambda表达式,Lambda表达式的代码量比linq查询的代码量少。
写完条件查询后,接下来就是导出数据到Excel表格,这里的代码是重中之重了,导出数据到Excel表格我们主要记的代码就是下面的代码了,先看看代码:
在这里插入图片描述
如图所示:(1)首先为要导出的数据创建一个工作簿,也就是先创建一个Excel表格。
(2)创建一个工作表,并使用“CreateSheet()”来为这个工作表命名,如这里命名为“考生成绩”。
(3)为这个工作表设计表头,第一步先创建表头,创建好表头后,就为这个表头设计表头字段,“CreateCell()”的索引值从0开始依次递增,“SetCellValue()”表示表头写入的字段。
(4)写入表格数据,先用“for(){}”循环语句循环遍历需要导出的数据,在“for(){}”里面第一步操作是先创建行,然后再为每一行添加相应的数据。
(5)将Excel文件转化为文件流输出,然后将Excel文件写入内存流中。
(6) 输出之前调用Seek(偏移量,游标位置)方法:确定流开始的位置,即移动文件读取指针到指定的位置。
Seek(0,Seek.begin) 第一个参数表示相对位置,第二个参数表示参照位置。
(7)为下载的Excel文件命名,如这里命名为“学生安全教育测试成绩+当前时间+.xls”。DateTime表示时间上的一刻,通常以日期和当天的时间表示,Now表示获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间,ToString表示使用指定的格式将当前DateTime对象的值转化为它的等效字符串表示形式,而这里的“yyyyMMddHHmmss”表示为“年月日时分秒”。
(8)返回:用return返回。“application/vnd.ms-excel”表示为MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。这样,导出数据到Excel表格就完成了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值