Springboot导出excel,合并单元格示例

以下用一个示例来说明springboot如何导出数据到excel。

首先引入Maven依赖:

  1. <dependency>
  2.      <groupId>org.apache.poi</groupId>
  3.      <artifactId>poi</artifactId>
  4.      <version>3.17</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>org.apache.poi</groupId>
  8.     <artifactId>poi-ooxml</artifactId>
  9.     <version>3.17</version>
  10. </dependency>
  11. <dependency>
  12.    <groupId>org.apache.poi</groupId>
  13.    <artifactId>poi-ooxml-schemas</artifactId>
  14.    <version>3.17</version>
  15. </dependency>

导出接口方法:

  1. @RequestMapping("/exportExcel")
  2.    publicvoid exportExcel(HttpServletResponse response,HttpServletRequest request)throwsException{
  3.        //接收参数
  4.        String ids = request.getParameter("ids");
  5.        List<ProjectInfoVo> result = projectInfoService.getProByIds(ids);

  6.        //查询数据,实际可通过传过来的参数当条件去数据库查询,在此我就用空集合(数据)来替代
  7.        List<ProjectInfoVo> list =newArrayList<>();

  8.        //创建poi导出数据对象
  9.        SXSSFWorkbook sxssfWorkbook =newSXSSFWorkbook();

  10.        //创建sheet页
  11.        SXSSFSheet sheet = sxssfWorkbook.createSheet("开复工项目");

  12.        CellRangeAddress region1 =newCellRangeAddress(0,1,(short)0,(short)12);
  13.        //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
  14.        sheet.addMergedRegion(region1);
  15.        SXSSFRow headTitle = sheet.createRow(0);
  16.        headTitle.createCell(0).setCellValue("重点工程项目计划表");

  17.        //创建表头
  18.        SXSSFRow headRow = sheet.createRow(4);
  19.        //设置表头信息
  20.        headRow.createCell(0).setCellValue("序号");
  21.        headRow.createCell(1).setCellValue("项目分类");
  22.        headRow.createCell(2).setCellValue("投资分类");

  23.        headRow.createCell(3).setCellValue("牵头单位");
  24.        headRow.createCell(4).setCellValue("工程名称");
  25.        headRow.createCell(5).setCellValue("建设单位");

  26.        headRow.createCell(6).setCellValue("建设地点");
  27.        headRow.createCell(7).setCellValue("建设内容");
  28.        headRow.createCell(8).setCellValue("总投资");

  29.        headRow.createCell(9).setCellValue("手续进展及工程现状");
  30.        headRow.createCell(10).setCellValue("是否XXXX项目");

  31.        headRow.createCell(11).setCellValue("开工时间");
  32.        headRow.createCell(12).setCellValue("完工时间");
  33.        String yihui =null;

  34.        // 遍历上面数据库查到的数据
  35.        for(ProjectInfoVo pm : result){
  36.            if(pm.getPrjType3()==0){
  37.                yihui ="是";
  38.            }else{
  39.                yihui ="否";
  40.            }
  41.            SXSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
  42.            dataRow.createCell(0).setCellValue(pm.getPrjId());
  43.            dataRow.createCell(1).setCellValue(pm.getProjectTypeName());
  44.            dataRow.createCell(2).setCellValue(pm.getPrjType4Name());

  45.            dataRow.createCell(3).setCellValue(pm.getLeadOrgId());
  46.            dataRow.createCell(4).setCellValue(pm.getPrjName());
  47.            dataRow.createCell(5).setCellValue(pm.getDevOrgId());

  48.            dataRow.createCell(6).setCellValue(pm.getDetailAddr());
  49.            dataRow.createCell(7).setCellValue(pm.getPrjIntro());
  50.            dataRow.createCell(8).setCellValue(pm.getPlanTotalInvest()+"");

  51.            dataRow.createCell(9).setCellValue("XXXXX");
  52.            dataRow.createCell(10).setCellValue(yihui);

  53.            dataRow.createCell(11).setCellValue(pm.getRealStartDate());
  54.            dataRow.createCell(12).setCellValue(pm.getRealEndDate());

  55.        }
  56.        // 下载导出
  57.        String filename ="XXXXXXX平台工程信息表";
  58.        // 设置头信息
  59.        response.setCharacterEncoding("UTF-8");
  60.        response.setContentType("application/vnd.ms-excel");
  61.        //一定要设置成xlsx格式
  62.        response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename +".xlsx","UTF-8"));
  63.        //创建一个输出流
  64.        ServletOutputStream outputStream = response.getOutputStream();
  65.        //写入数据
  66.        sxssfWorkbook.write(outputStream);

  67.        // 关闭
  68.        outputStream.close();
  69.        sxssfWorkbook.close();
  70.    }

前台请求接口方法:

  1. function bbdc(){
  2.    window.location.href='xxxxxxxx/front/exportExcel';
  3. }

合并Excel单元格

方法:
  1. CellRangeAddress region1 =newCellRangeAddress(rowNumber, rowNumber,(short)0,(short)11);
  2. //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
  3. sheet.addMergedRegion(region1);

设置样式

演示文字居中方法
  1. //合并的单元格样式
  2. HSSFCellStyle boderStyle = wb.createCellStyle();
  3. //垂直居中
  4. boderStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  5. boderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 创建一个居中格式
  6. //设置一个边框
  7. boderStyle.setBorderTop(HSSFBorderFormatting.BORDER_THICK);


本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » Springboot导出excel,合并单元格示例
分享到:
赞(0)

评论抢沙发

评论前必须登录!