实现导入导出数据总结
一.
页面HTML导入部分:
1.
弹出导入Excel的模态框:
写导入方法,方法里可根据自己的需求写一些限制
·禁用保存按钮
·重置表单等最后弹出模态框。
- 下载模板:·打开一个新的窗口,并在窗口中装载指定URL地址的网页。
- 上传Excel表格保存到临时表:
·避免取消选择后触发上传首先写个判断,判断上传文件为空或者为undefined就return。显示加载层-提交表单-表单数据重载-清空表单。 - 保存导入的Excel数据到数据库
二.控制器导入部分:
1.下载数据模板:
·获取模板路径并判断模板是否存在,不存在就联系系统运维人员,存在则获取文件名称并返回文件。
2. 将导入的数据保存到session里:
·获取读取的文件
·把文件转换为二进制数组
·二进制数组转成内存流
·利用NPOI把内存流中的数据读取成Excel-把session中的ImportExcel移除避免残留以前数据
3.提取session里的数据进行分页
4.保存入数据库:
·纪录保存成功的数据条数和数据库重复而保存失败的数据条数
·实例化并运用foreach循环来判断是否与已有数据库重复
·最后返回Json
三.HTML导出部分
1.定义导出方法:function + 方法名(){}。
2.声明变量:方法里声明变量来接收表格数据的筛选条件。
3.判断:判断(if)出声明的变量是否为空或者为undefined,如果为空或undefined则直接赋值为零。
4.弹出询问框(关闭询问框-打开控制器的导出方法)。
四.控制器导出部分
1.导出数据到Excel表格:public
ActionResult XX(参数){ }。
2.数据查询与条件筛选:多表联查
分组联查等方法筛选出需要的信息,并用if语句进行条件判断。
3.创建工作簿:HSSFWorkbook XX = new HSSFWorkbook();
4.创建工作表:ISheet sheet = XX.CreateSheet(”表名”);
5.创建表头: IRow headRow = sheet.CreateRow(0);
6.设计表头: headRow. CreateCell(0).SetCellValue(“XX”);
headRow. CreateCell(1).SetCellValue(“XX”);
headRow. CreateCell(2).SetCellValue(“XX”);
7.写入表格数据:for循环这个新的表,创建行并写入数据。
·将Excel数据转换为文件流输出,输出前调用Seek(偏移量,游标位置)方法来确定流开始的位置。
·seek(0,seekorigin.Begin)第一个参数表示相对的位置,第二个参数表示参照位置;
8.为下载的Excel文件命名
·假设文件名为fileName,则string fileName=“文件名称”+现在的时间+“.xls”
例:string fileName =
“考生信息” +DateTime.Now.ToString(“yyy-MM-dd-HH-mm-ss-ffff”) + “.xls”
9.return File(ExcelStream,“application/vnd.ms-excel”, fileName)