一. 导出什么
- 在图1,里面就是一个导出样式了,图1的左面有一个导出考生的按钮,当点击的时候,下列的
数据就会导出到一个work工作簿里面,同时还可以进行一个数据的筛选,当你通过数据的查询
出来就可以进行进行部分的导出。 - 导出的数据就是你筛选后的的数据了
图1 导出样式
3. 如果要进行筛选进行导出数据的话,还得要进行引用一个插件进来才可以。
4. 这个插件就是NPOI了,NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装
Office的情况下对Word或Excel文档进行读写操作,可以进行一个数据进行一个数据的
5. 在图2里面就是一个数据的引用了,在引用哪里点击鼠标右边然后在打开鼠标的添加引用,然后
浏览找到NPOI.dll就可以了
图 2 NPOI插件
二. 筛选数据
- 在图3里面就是一个数据的筛选了
- 其中在ExportToExcel( )里面我还给了三个参数,第一个就是AcademeID就是学院了,CradeID班级
等等了,这些就是一个条件筛选了,通过传过值来进行一个筛选。
图3 筛选数据
- 在图4里面就是一个简单的查询数据进行一个筛选语句了,这里的筛选语句就涉及一个链表的查询
了,并且还涉及到一个排序的查询 - 首先我们要查询的表就是一个学生表了首先我们就要进行一个链表查询:join自定义名称 in 数据库
里面的表 on 某表的ID equals 等于当前的ID,以此来链表,一一的来查询数据库里面你需要的表,
同时要再次orderby进行一个排序查询。
图4 查询数据
5. 在控制器里面还进行一个参数的传递,传递过来还要进行参数的判断来进行一个筛选,判断是否
有值,如果有值的话就进行查询在图5里面就是对其中一个参数进行一个筛选,其他也是如此,
下面就是一个简单的一个Lambda表达式了
图5 参数筛选
6. 接下来我就讲解一下图5的Lambda表达式吧,首先呢,我们要判断AcademeID是否有值,有
值后:selAll 这个就是上面图4查询出来的的数据,where就是筛选了m这个指向就是selAll里面
数据库里面的表,最后就可以进行一个数据库筛选了。
三. 数据的导出到Excel表格
- 第一步创建工作簿Excel:HSSFworkbook excelBook = new HSSFWorkbook(),这一句代码就是一个工
作簿的创建了,而里面的excelBook是一个自定义名称来的 - 第二步就是为工作簿的创建工作表并且命名了,NPOI. SS.UserModel.ISheet sheetl = excelBook.Create
Et(“工作表自定义名称”),NPOI.SS是Excel是一个Excel公用接口,而UserModel.ISheet就是工作表
表的创建了 - 第三步就是创建表头,NPOI.SS.UserModel.IRow rowl = sheetl.CreateRow(0) 因为第一行用来放标题的,
所以才要创建第一行标题,比如现在我们有九列数据,我们还要创建九列,并且同时给标题,如:
row1.CreateCell(0).SetCellValue(“标题名称”) - 上面说明了,标题我们可以知道有多少的,而每一行的数据则是不知道的,因此我们可以进行一个
数据的遍历来进行获取到每一个值了 - 由图6我们可以看到 i < listExaminee.Count 就 i++ 这个就是上面进行查询的所有数据了,此时我们还
创建行, 如图6 创建行,创建好行之后:rowTemp.CreateCell(0).SetCellValue(listExaminee[i].StudentNumber)
这句就是一个给每一行赋值了,而这句里面的StudentNumber这是上面查询出来的具体表数据了
图 6 循环数据
6. 在图7里面的fileName是一个对Excel重名称的操作了
7. 在图6里面的MemoryStream bookStream = new MemoryStream(),这句就是创建一个文件流了,
excelBook.write(bookStream) 就是把工作簿的数据进行写入到文件流里面,因为数据的导入导出倒是
要以文件流形式才可以输出的
8. bookStream.Seek(0, SeekOrigin.Begin)这句就是一个文件输出的开始位置了
9. 最后就可以return File()以文件的形式返回就可以进行一个数据导出了
图 7
总结:
通过这次总结让我领会到了一个数据导出的方式了,同时也让我体会到数据的获取可以通过
For()循环的遍历出来每一个数据了,同时在上面的总结也希望帮助到你!