C#中导出数据到Excel表格
(作者:郭鑫 撰写时间:2019年4月23号)
有些数据的使用不可能仅仅限制于本个项目,还需要在外部使用,当需要在外部使用数据时,就要对数据进行提取,其中一个提取的方式就是把数据导出到Excel表格。
JS部分
在JS部分的代码很少,就是一个询问提示框然后在回调函数里写上一句打开下载的代码(也就是“window.open()”)就可以完成了。
但是因为这里涉及到了多条件查询,所以要在询问之前把多条件查询的条件处理一下,获取到多条件查询的条件,判断是否为空或者undefined,是就为其赋值为0或空(int类型的赋值为0,string类型的赋值为空)。并把这些条件拼接到下载的路径中,如上面的“?AcademeID=" + AcademeID……&StudentDetail=" + StudentDetail”,就是本次多条件查询的条件拼接到路径上的内容。
获取多条件查询的值:
判断并赋值:
控制器部分
接收值部分只接收页面传递过控制器部分的多条件查询的值即可。
开药也要对症下药,导出也是同样的道理,要导出数据首先要知道要导出的数据是什么,所以,导出数据这个功能在控制器部分第一步就是要对数据进行查询。
查询就是查询数据表格和条件筛选的组合,前面我也写过多条件查询的方法,控制器部分步骤是一样的,只是值的问题,接收值的定义也一样。不过导出时只要把数据筛选出来就可以了,不用进行其他的操作。
接着就是创建Excel表格了。在创建前要引用一个引用NPOI,不知道的可上网查,或者问我。
创建Excel表格有5个步骤:
1、创建Excel工作簿;2、创建工作表;3、创建表头行;4、设置表头;5、为Excel表格添加数据
前三步没什么好说的,除了命名外其他都是是固定写法。
第四步:设置表头
根据你的内容确定要创建多少个单元格,并且为各个单元格命名。
第五步:为Excel表格添加数据
这里又分为两步,先创建列然后再往列里添加数据,因为要导出的数据的条数是变化的,所有要用循环一条一条的往表格里添加,添加数据是对应表头的名称,添加对应的内容。
循环时以数据的条数作为条件,在创建行时要从第二行开始创建,第一行已经用作表头了。
接着就要对创建好并赋值的Excel表格进行处理,把Excel表格转化为内存流。
1、 声明一个存放内存流的容器,并把Excel工作簿写入内存流中
2、输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置
最后就是返回到页面,以文件的形式返回,在返回之前要先给Excel表格命一个名字。
在页面时,如果执行成功。在各个浏览器的显示不同,在谷歌浏览器的显示如下图所示