弹簧+角实现导出excel的实现代码

  

<强>需求描述
  

  

要求批量导出数据,以excel的格式。

  

<强>选择方式
  

  

前台+后台

  

之前在别的项目中也遇到过导出的问题,解决方式是直接在前台导出将表格导出。

  

这次没有选择前台导出的方式,是由于需要导出所有的数据,所以考虑直接在后台获取所有的数据,然后就直接导出,最后前台触发导出API。

  

<强>后台实现
  

  

导出使用的是芋泥,在上一篇文章中,我已做了基本的介绍,这里就不做介绍配置了,参照:POI实现将导入Excel文件

  

<>强创建表格
  

  

首先先建立一张表,这里要建立.xlsx格式的表格,使用XSSFWorkbook:

        工作簿工作簿=new XSSFWorkbook ();   单表=工作簿。createSheet(“新单”);      

接着创建表格的行和单元格:

        行一行=sheet.createRow (0);    row.createCell (0);      

然后设置表头:

        row.createCell (0) .setCellValue(“学”号);   row.createCell (1) .setCellValue(“姓名”);   row.createCell (2) .setCellValue(“手机号码”);      

最后获取所有的数据,对应的填写到单元格中:

        int i=1;   (学生学生:studentList) {   行=sheet.createRow(我);   row.createCell (0) .setCellValue (student.getStudentNumber ());   row.createCell (1) .setCellValue (student.getName ());   row.createCell (2) .setCellValue (student.getPhoneNumber ());   我+ +;   }   之前      

<强>输出
  

  

这部分是纠结比较久的,反复试了很多次。

  

一开始是直接以文件输出流的形式输出的:

        FileOutputStream输出=new FileOutputStream (“test.xlsx”);    workbook.write(输出);      

这样可以正确生成文件,但是问题是,它会生成在项目的根目录下。

  

而我们想要的效果是,下载在本地自己的文件夹中。

  

要解决这个问题,需要添加相应信息,返回给浏览器:

        OutputStream安全系数=response.getOutputStream ();   response.reset ();   字符串文件名=安馐浴?   文件名=URLEncoder。编码(文件名,“utf8 ");   响应。setHeader(“附加”,“附件;文件名=" +文件名+“.xlsx”);      response.setCharacterEncoding (“utf - 8”);   response.setContentType(“应用程序/vnd.openxmlformats-officedocument.spreadsheetml.sheet”);   workbook.write (fos)提交;   fos.close ();   之前      

后台完成代码:

        公共空间batchExport (HttpServletResponse响应){   logger.debug(“创建工作表”);   工作簿工作簿=new XSSFWorkbook ();   单表=工作簿。createSheet(“新单”);      logger.debug(“获取所有学生”);   ListstudentList=(List      

<强>前台实现
  

  

在前台调用的时候,也经历了多次失败,谷歌了很多篇文章,各种各样的写法都有,自己也是试了试,前台后台都对照做了很多尝试,但基本都是有问题的。这里我值给出我最后选择配套后台的方法。

弹簧+角实现导出excel的实现代码