MVC的导出技术分享

本文围绕MVC项目开发,介绍了使用VS开发工具实现数据导入导出Excel表格的功能。详细阐述了控制器代码部分,包括引用插件、查询数据、实例化工作簿等步骤;还说明了视图中导出函数的编写,如获取表格总行数、拼接字符串、匹配查询与导出条件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具与关键技术:VS,MVC
作者:陈梅
撰写时间:2019年5月3日
图片代码来源于老师教程
在MVC制作项目中,我们还最常使用到数据,也是用到把数据导出Excel表格中,随时拿来看,那就要实现一个数据的导入与导出的功能。
下面我们来看一下控制器的代码部分。
在这里插入图片描述
在这里插入图片描述
做一个导出技术的实现,首先我们需要引用一下导出与导入用到的插件,用这个来先做一个Excel表格,这个插件跟我们电脑的Word文档连接着,然后再开始使用插件。导出技术的开始我们都要先写一个查询代码,能进行查询数据。然后我们就开始实例化一个工作薄,HSSFWorkbook是插件的方法,用于创建工作簿。先创建一个工作表,ISheet也是插件里面的方法,用于给工作表命名一个名称,给工作表命名之后,再编写数据,导出数据是要进行导出两个内容的,一:就是标头的列数,我这里的代码是一行九列的数据,然后给每个单元格的数据复赋值;先进行一个linq语句的查询,查询一下数据,然后就进行数据的筛选,最后listStu就是我们要具体导出的多少条的数据。List listExaminee = listStu.ToList();这行的代码是把查询到的数据进行转化对象列表的格式。二、我们就拿数据的总条数进行一个for循环,创建我们剩下的数据,有多少条数据就创建多少条(i+1),因为有表头了,所以要从1开始,就是第二行,如果没表头,我们就要从0开始。我们要为工作薄创建一个名称,所以我们要把工作薄唯一化。我们需要重命名一下工作簿,先声明一串字符串,作为我们这个工作簿的名字,因为时间是不会改变的,所以我们要给工作簿名称时再获取一个时间,我们到时候导出的数据的Excel就会看到名称和时间。然后直接返回文件,bookStream为工作名,还有返回Excel表格,然后再把声明的字符串变量名放在最后。return File的意思是我们弄得是个文件,所以必须要用文件的格式返回,要先把Excel表格转化成文件流才能进行返回,而不能什么都不做就直接返回了。我们还需要读取文件,现在我们写的文件还不能读取和输出,在输出之前我们要调用Seek(偏移量,游标位置),要从文件流的开头读取,然后在把文件流application/vnd.ms-excel进行返回,我们创建的表格不能直接转化到Excel表格中,所以我们要以IO流的格式把表格转化成文件流。首先引用IO流,然后再把文件作为流来输出。文件流有两种方式:一种Read的读取,一种是书写,就是往Excel表格里面写数据。
接下来我们来看一下视图中的代码部分:
在这里插入图片描述
接下来我们就开始写导出的函数。我们导出的就是table里的具体总行数,所以我们要获取layui里面的table的总行数。写导出函数要分清楚思维思路,首先我们先提取查询出来的数据,然后再到当前的table中获取查询到的数据。要声明一个字符串,然后再进行拼接,StrSeachWhere += ’& ’+ tabStudent,config.where[kay]这串代码为拼接字符串的格式,所谓的拼接,就是把学院表、年级表、班级表、学生信息表拼接起来了。因为我们要拿查询出来的字段和导出的字段相匹配,所以我们就要有接下来的代码。我们想获取需要导出的文本值,第一先获取下拉框的值,然后声明变量。然后再判断传输过来的数据为不为空,控制器中有多少个表就判断多少个表的数据有没有值。拿导出的条件和查询的条件进行匹配,所以还是要字符串拼接。最后再进行判断,判断strSeachWhere 是否等于strTemp,如果不相等就会有提示,提示请选择要传输的数据;如果相等,数据就会传输进去,再提示是否要导出那么多条数据? function里的函数是要关闭提示层的,所以括号里命的是什么名称,下面关闭提示层中的括号就是什么名称,然后再用open去执行导出的方式,要有条件才能导出的,所以就要用字符串匹配的格式截取长度。
最后我们来看一下导出的效果吧!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来我们就开始写导出的函数。我们导出的就是table里的具体总行数,所以我们要获取layui里面的table的总行数。写导出函数要分清楚思维思路,首先我们先提取查询出来的数据,然后再到当前的table中获取查询到的数据。要声明一个字符串,然后再进行拼接,StrSeachWhere += ’& ’+ tabStudent,config.where[kay]这串代码为拼接字符串的格式,所谓的拼接,就是把学院表、年级表、班级表、学生信息表拼接起来了。因为我们要拿查询出来的字段和导出的字段相匹配,所以我们就要有接下来的代码。我们想获取需要导出的文本值,第一先获取下拉框的值,然后声明变量。然后再判断传输过来的数据为不为空,控制器中有多少个表就判断多少个表的数据有没有值。拿导出的条件和查询的条件进行匹配,所以还是要字符串拼接。最后再进行判断,判断strSeachWhere 是否等于strTemp,如果不相等就会有提示,提示请选择要传输的数据;如果相等,数据就会传输进去,再提示是否要导出那么多条数据? function里的函数是要关闭提示层的,所以括号里命的是什么名称,下面关闭提示层中的括号就是什么名称,然后再用open去执行导出的方式,要有条件才能导出的,所以就要用字符串匹配的格式截取长度。
最后我们来看一下导出的效果吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值