将查询出的数据导出到Excel表格

将查询出的数据导出到Excel表格

文献种类:专题技术文献;
开发工具与关键技术:VS
作者:蛋蛋;
撰写时间:2019/06/6

什么是导出?
从字面上的意思来理解就是,导:引导,出:出来以及过程,
所以导出是吧数据引导出去转移到另外的存储过程。导出到Excel表格首先需要进行几步操作,
第一:将表格数据渲染出来;
第二:根据条件筛选出需要导出的数据所以我们根据需求进行操作,将表格数据渲染出来,
在这里插入图片描述
看到需求呢一看上去就需要分析如何查询出需要的字段来满足需求,显然这是多表查询出来的数据。
分别有排号表作为主表,房源表作为外键进行连接其他表,还有状态表
(状态表考虑到整个项目有多种状态所以建了一个枚举类,也称之为就是状态表)
在一个就是筛选条件,从图中我们看到有三个input标签作为整个数据的筛选条件也是高级查询
,其中还有时间作为筛选条件之一
第二:做导出之前这些筛选条件也同样是必不可少的条件,根据所需导出数据
① 写导出的方法之前把点击事件写好, οnclick=“ExportToExcel()” 记得加()因为这个像这总低级错误同时也犯过,然后并不报错同时无法启动断点检查错误,而去盲目检查JS代码导致时间的流失,
② 获取当前表格数据的筛选条件(高级查询)
③ 提示用户是否打印到Excel表格,提升用户体验万一误点可减少不必要的麻烦
var index = layer.confirm(“是否要导出当前表格中的数据,是请点击确定按钮,否则请筛选需要导出的数据!”, { icon: 3, title: “提示” }, function () {
//关闭模态框 layer.close(index);
 window.open(“ExportToExcel?RegisterOdd=” + RegisterOdd + “&ClientName=” + ClientName + “&RowNumberTime=” + RowNumberTime);window.open是打开的意思,
 后面主要用于条件拼接控制器这边就略带复杂那么一点点但是理解起来就不是特别绕先查询出我们需要的数据这个跟一开始我们渲染表格的时候是一样的所以可以直接用注意:
 导出Excel表格需要引进一个新的东西 NPOI
在这里插入图片描述
引用时也十分简单,先把文件拷贝到项目一起的文件夹当中,在打开“视图”当中的[解决方案资源管理器]中的引用直接添加引用
在这里插入图片描述
找到浏览最近看到放进文件夹当中的直接添加就OK引进文件之后就需要为Excel表格做出对应的格式

  1. 创建Excel工作薄 HSSFWorkbook excelBook = new HSSFWorkbook(); 创建新的工作薄
  2. 创建工作表 NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet(“销售管理-排号查询”); 工作表呢是Excel在底部会出现的,后面是文件名称(自定义)
  3. 在这里插入图片描述
  4. 创建表头行 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
  5. 设置表头 row1.CreateCell(0).SetCellValue(“登记单号”); row1.CreateCell(1).SetCellValue(“客户姓名”); row1.CreateCell(2).SetCellValue(“楼栋”); row1.CreateCell(3).SetCellValue(“房号”);
  6. row1.CreateCell(4).SetCellValue(“排位号”);row1.CreateCell(5).SetCellValue(“单据日期”); row1.CreateCell(6).SetCellValue(“状态”);
  7. 这个是根据一开始查询出来的数据进行创建表头
  8. 为Excel表格添加数据使用for循环,因为可能数据不止一条他有很多条,
  9. for (int i = 0; i < listLineNumber.Count(); i++){ //创建行NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i + 1);
  10. //添加数据 rowTemp.CreateCell(0).SetCellValue(listLineNumber[i].RegisterOdd);//登记单号 rowTemp.CreateCell(1).SetCellValue(listLineNumber[i].ClientName);//客户姓名 }

因为这个项目需求有六个字段也就是说有六个表头和需要添加六条数据所以在添加的时候以此类推即可

  1. 接下来是为文件命名string fileName = “销售管理-排号查询” + DateTime.Now.ToString(“yyy-MM-dd-HH-mm-ss-ffff”) + “.xls”;
    后面是打印当时的时间:年/月/日/时/分/秒 以及文件夹后缀;
    也是最后一步将文件转换为内存流 MemoryStream ExcelStream = new MemoryStream();将Excel文件写入内存流, excelBook.Write(ExcelStream); //输出之前调用Seek(偏移量,游标位置)移动文件读取指针到指定的位置 //Seek(0,Seek,begin)
    第一参数表示相对位置,第二个是参照位置
    ExcelStream.Seek(0, SeekOrigin.Begin); //MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型return File(ExcelStream, “application/vnd.ms-excel”, fileName);这样导出到Excel表格就完成了看最终效果图
    在这里插入图片描述
    这样就可以了但是还有一个筛选条件没用上,用高级查询条件作为限制条件那么会如何呢?在这里插入图片描述
    这是用时间作为条件筛选
    在这里插入图片描述
    这样导出到Excel表格就完成了
    在这里插入图片描述
    这也就是文件存储的文件名以及时间后缀等

猜你喜欢

转载自blog.csdn.net/qq_42577408/article/details/91128437