开发工具与关键技术:Visual Studio、MVC
作者:幻奏
撰写时间:2019.5.5
我们在日常的生活中常常会看到很多的数据,有时,我们不一定只是在项目里面看到数据,可能我们还要在其他的地方使用,这时我们就要把数据拿出来了。把数据导出来的方法有很多,我就说一下如何把数据从MVC中导出到Excel表格的。
首先我们要点击导出的按钮,然后弹出一个提示框,询问你是否导出你所要导出的数据,确定后就下载我们成功导出数据的Excel表格。
我们在视图那边写的东西不多,就一点点。因为我们要用到多条件查询,所以我们先处理一下要查询的条件。
获取多条件查询的值:
然后我们要判断它是否为空或者undefined,是就赋值为0或者空。注意:int类型的赋值为0,string类型的赋值为空。
我们需要在那个询问框那里加一个下载路径。
打开下载路径的代码是(window.open();)里面加路径,这里我们要把查询到的数据拼接到路径中,就是在上面图片里面的问号的后面拼接。
视图写完后,我们就要写控制器的了。控制器的东西就有一点多了,我们先接收视图传过来的值,然后用多条件查询查出数据,然后再筛选合适的数据。这个我之前已经写了很多次了,所以就不再写出来了啦。
在创建Excel表格之前我们要引用NPOI,不引用的话是不会创建成功的,它的使用方法嘛,自己到网上找。
创建Excel表格有5个步骤:
1、 创建工作簿
2、 创建工作表
3、 创建表头行
4、 设置表头
5、 为Excel表格添加数据
前面的三步基本是固定的写法,所以你们自己看图片。
就第二个命名可以不一样,其他的都是这样写的。
第四步是设置表头,你要根据你的内容设置单元格并且命名,你要创建多少都可以。
第五步是为Excel表格添加数据
首先我们要创建列,然后往列里面添加数据,由于数据不是一条,所以我们要用循环把数据一条一条地添加到Excel表格里面去。
注意:对应的表头名称应添加对应的数据,不要添加错了啊。
由于循环是以数据的条数为条件,而我们的表头做了第一条数据,所以我们是在第二行开始循环创建数据的。
最后我们要做的是把Excel表格转化为内存流。
1、 我们先声明一个存放内存流的容器,然后把Excel文件写入内存流中。
2、调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置
到了最后我们要为文件命名,我们导出的过程中如果导出了多次,那么文件名将会重复,所以我们要在它的命名那里加上时间,这样就不会再重复了。
然后就是返回数据到页面,这里是返回了一个文件。
return File(Excel表格,文件格式,文件名称);
到这里导出数据到Excel表格就说完了,如果我有什么地方说的不好,请你们帮忙指出来,让我们一同进步。哦对了,由于每个浏览器不一样,所以打开导出的窗口也不太一样,不过没什么影响。