Maven引入依赖

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>RELEASE</version>
  10. </dependency>

导出excel比较重要的api有以下几个,其他的并无难点

  • 创建一个excel文件工作薄;(HSSFWorkbook workbook = new HSSFWorkbook())
  • 创建一张表;HSSFSheet sheet = workbook.createSheet(“统计表”)
  • 创建一行;HSSFRow row = sheet.createRow(0)
  • 填充一列数据; row.createCell(0).setCellValue(“数据”)
  • 设置一个单元格样式;cell.setCellStyle(style)

 

注意!!!  如果文件没有提示下载  则不代表生成EXCEL失败  文件会在项目 根目录 中自动生成!!

  1. package com.example.demo.controller;
  2. import com.example.demo.domain.User;
  3. import com.example.demo.service.UserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. import org.apache.poi.hssf.usermodel.HSSFCell;
  7. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  8. import org.apache.poi.hssf.usermodel.HSSFDataFormat;
  9. import org.apache.poi.hssf.usermodel.HSSFFont;
  10. import org.apache.poi.hssf.usermodel.HSSFRow;
  11. import org.apache.poi.hssf.usermodel.HSSFSheet;
  12. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  13. import javax.servlet.http.HttpServletResponse;
  14. import java.io.FileOutputStream;
  15. import java.io.OutputStream;
  16. import java.net.URLEncoder;
  17. import java.util.List;
  18. @RestController
  19. @RequestMapping(value = "/excel")
  20. public class ExcelController {
  21. @Autowired
  22. private UserService userService;
  23. //创建表头
  24. private void createTitle(HSSFWorkbook workbook,HSSFSheet sheet){
  25. HSSFRow row = sheet.createRow(0);
  26. //设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度
  27. sheet.setColumnWidth(1,12*256);
  28. sheet.setColumnWidth(3,17*256);
  29. //设置为居中加粗
  30. HSSFCellStyle style = workbook.createCellStyle();
  31. HSSFFont font = workbook.createFont();
  32. font.setBold(true);
  33. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  34. style.setFont(font);
  35. HSSFCell cell;
  36. cell = row.createCell(0);
  37. cell.setCellValue("ID");
  38. cell.setCellStyle(style);
  39. cell = row.createCell(1);
  40. cell.setCellValue("显示名");
  41. cell.setCellStyle(style);
  42. cell = row.createCell(2);
  43. cell.setCellValue("用户名");
  44. cell.setCellStyle(style);
  45. cell = row.createCell(3);
  46. cell.setCellValue("创建时间");
  47. cell.setCellStyle(style);
  48. }
  49. //生成user表excel
  50. @GetMapping(value = "/getUser")
  51. public String getUser(HttpServletResponse response) throws Exception{
  52. HSSFWorkbook workbook = new HSSFWorkbook();
  53. HSSFSheet sheet = workbook.createSheet("统计表");
  54. createTitle(workbook,sheet);
  55. List<User> rows = userService.getAll();
  56. //设置日期格式
  57. HSSFCellStyle style = workbook.createCellStyle();
  58. style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
  59. //新增数据行,并且设置单元格数据
  60. int rowNum=1;
  61. for(User user:rows){
  62. HSSFRow row = sheet.createRow(rowNum);
  63. row.createCell(0).setCellValue(user.getId());
  64. row.createCell(1).setCellValue(user.getName());
  65. row.createCell(2).setCellValue(user.getUsername());
  66. HSSFCell cell = row.createCell(3);
  67. cell.setCellValue(user.getCreate_time());
  68. cell.setCellStyle(style);
  69. rowNum++;
  70. }
  71. String fileName = "导出excel例子.xls";
  72. //生成excel文件
  73. buildExcelFile(fileName, workbook);
  74. //浏览器下载excel
  75. buildExcelDocument(fileName,workbook,response);
  76. return "download excel";
  77. }
  78. //生成excel文件
  79. protected void buildExcelFile(String filename,HSSFWorkbook workbook) throws Exception{
  80. FileOutputStream fos = new FileOutputStream(filename);
  81. workbook.write(fos);
  82. fos.flush();
  83. fos.close();
  84. }
  85. //浏览器下载excel
  86. protected void buildExcelDocument(String filename,HSSFWorkbook workbook,HttpServletResponse response) throws Exception{
  87. response.setContentType("application/vnd.ms-excel");
  88. response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename, "utf-8"));
  89. OutputStream outputStream = response.getOutputStream();
  90. workbook.write(outputStream);
  91. outputStream.flush();
  92. outputStream.close();
  93. }
  94. }

注意!!!  如果文件没有提示下载  则不代表生成EXCEL失败  文件会在项目 根目录 中自动生成!!

版权声明:本文为caiba原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/caiba/p/9118259.html