• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

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

技术杂谈 勤劳的小蚂蚁 3个月前 (01-31) 98次浏览 已收录 0个评论 扫描二维码

以下用一个示例来说明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);



丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Springboot导出excel,合并单元格示例
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00