导入的思路:
① 下载模板文件
② 获取上传的文件
③ 把上传的文件转化成二级制数组
④ 把二级制数据转化成内存流
⑤ 利用NPOI把内存流中的数据读取成Excel
⑥ 将内存流转化为工作簿,接着获取第一个工作表,先把Excel保存到临时表格里面 然后获取工作表里面的行和列
⑦ Excel表头作为临时表格的列,创建临时表格中的列,循环添加标题行中各个单元格的值, Excel数据作为临时表格的数据,Excel的行和列给到临时表,然后再通过双循环遍历临时 表的行和列移除空行
⑧ 验证数据导入的数据是否与数据库的数据重复
⑨ 将临时表的数据转化成数据库的表的数据
定义一个方法下载模板文件
然后再定义一个方法上传文件,获取上传的文件,把上传的文件转化成二进制数组,把二级制数据转化成内存流,利用NPOI把内存流中的数据读取成Excel
判断是否存在工作表
验证导入的数据是否重复和数据的准确性
循环遍历临时表的数据添加到单元格里面
最后
2.导出部分
导出一般分两种导出
1.有模板的导出有模板导出的步骤:
① 用Linq查询出的数据再筛选出要导出的数据
② 根据模板文件的Excel导出,检查模板文件是否存在
③ 使用NPOI打开模板Excel,使用NPOI打开模板Excel 得到一个工作簿,打开模板所在第一个工作表,构建单元格样式
④ 设置标题,如果筛选时间段不为空就拼接上筛选时间段
⑤ 往模板中填充数据,设置数据单元格的样式(水平垂直居中对齐,设置边框为实线),开始填充数据
⑥ 以流的方式返回,把Excel转化为流,输出,定义内存流,将工作薄写入内存流,输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度,浏览器中显示的文件下载对话框内要使用的文件名
根据模板文件的Excel导出,检查模板文件是否存在
使用NPOI打开模板Excel,使用NPOI打开模板Excel 得到一个工作簿,打开模板所在第一个工作表,构建单元格样式