在MVC中将SQL数据导出到Excel中的操作如下
- 首先用一个button按钮来进行操作 ,给它绑定一个点击事件的方法 ,点击后请求具体的导出数据的方法(public ActionResult ExportToExcel)
- 现在开始在方法内将SQL数据导出到Excel中
- 第一步将需要导出的数据用LinQ语句查询出来 ,查询出学生表的数据并且是list数据类型
- 接下来开始在方法内创建一个Excel工作簿来接收将要导出的数据
- 创建完Excel工作簿后 ,开始创建Excel工作簿里面的工作表 ,这里呢先引用一下NPOI来建立工作表 ,并且给工作表命名为学生信息
- 创建完Excel工作表后 ,工作表里面什么都没有 ,按照一般使用Excel的流程 ,创建完表后就是开是创建行来接收数据 ,这里呢就先创建表头行 ,并且自定义表头行的数据
- 接下来在表头行添加学生的基本信息字段(学号 ,姓名 ,身份证号 ,性别 ,学院 ,专业 ,年级 ,班级 ,账号),代码的意思就是在创建出来的表头行里面找到下标为0的格子来设置它要显示的字符串
- 因为不知道每次要导出的数据是多少条 ,所以这里我用for循环来循环学生表内的所有数据 ,在for循环内,创建除表头行的所有行 ,并且在循环出来的行内添加学生表内的数据(Student[i].数据库字段名)
- 现在开始为导出的Excel文件命名
string fileName = “考生信息” + DateTime.Now.ToString(“yyyy-MM-dd–HH-mm-ss-ffff”) + “.xls” - 实例化MemoryStream
MemoryStream ExcelStream = new MemoryStream(); - 因为SQL导出的数据不能直接放入到Excel中 ,所以先将Excel文件转化为内存流来存放SQL导出的数据
excelWorkbook.Write(ExcelStream); - 输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置 ,Seek(0,Seek。begin) 第一个参数表示相对位置,第二个参数表示参照位置
ExcelStream.Seek(0, SeekOrigin.Begin); - 最后return返回文件类型 ,MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
return File(ExcelStream, “application/vnd.ms-excel”, fileName); - MVC中简单的SQL数据导出到Excel的方法就是这种