ExcelEasypoiUtils.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.ydtech.utils.excel;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.ExcelImportUtil;
  4. import cn.afterturn.easypoi.excel.entity.ExportParams;
  5. import cn.afterturn.easypoi.excel.entity.ImportParams;
  6. import com.ydtech.exception.SystemException;
  7. import org.apache.poi.ss.usermodel.Workbook;
  8. import org.springframework.web.multipart.MultipartFile;
  9. import javax.servlet.ServletOutputStream;
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.io.IOException;
  12. import java.io.UnsupportedEncodingException;
  13. import java.net.URLEncoder;
  14. import java.util.List;
  15. /**
  16. * @Author: lig
  17. * @create: 2023-07-25
  18. * description: Excel easypoi 导入导出工具类
  19. */
  20. public class ExcelEasypoiUtils {
  21. /**
  22. * excel 导出 重写
  23. *
  24. * @param list 数据列表
  25. * @param pojoClass pojo类型
  26. * @param fileName 导出时的excel名称
  27. * @param response
  28. */
  29. public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
  30. ExportParams ep = new ExportParams();
  31. Workbook workbook = ExcelExportUtil.exportExcel(ep, pojoClass,list);
  32. // try {
  33. // //3.返回表格
  34. // //设置表格文件名字
  35. //// String fileName = batchNum + "-保司数据导出";
  36. // fileName = URLEncoder.encode(fileName,"UTF8");
  37. //
  38. // //设置返回数据类型
  39. //// response.setContentType("application/vnd.ms-excel;charset=utf-8");
  40. // response.setContentType("multipart/form-data");
  41. // response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
  42. //
  43. // //将表格输出
  44. // workbook.write(response.getOutputStream());
  45. //
  46. // } catch (UnsupportedEncodingException e) {
  47. // throw new RuntimeException(e);
  48. // } catch (IOException e) {
  49. // throw new RuntimeException(e);
  50. // }
  51. // fileName = URLEncoder.encode(fileName,"GBK");
  52. // fileName = URLEncoder.encode(fileName,"UTF8");
  53. fileName = URLEncoder.encode(fileName,"UTF8");
  54. response.reset();
  55. // response.setContentType("application/vnd.ms-excel;charset=utf-8");
  56. response.setContentType("application/x-msdownload");
  57. response.addHeader("Access-Control-Allow-Origin", "*");
  58. response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
  59. response.addHeader("Access-Control-Allow-Headers", "Content-Type");
  60. response.setHeader("Content-Disposition", "attachment; filename=" + fileName +".xlsx");
  61. // response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName+".xlsx", "UTF-8"));
  62. ServletOutputStream outStream = null;
  63. try {
  64. outStream = response.getOutputStream();
  65. workbook.write(outStream);
  66. } finally {
  67. outStream.close();
  68. }
  69. }
  70. /**
  71. * excel 导入 重写
  72. *
  73. * @param file excel文件
  74. * @param pojoClass pojo类型
  75. * @param titleRows 表格标题行数
  76. * @param headRows 表头行数,默认1
  77. * @param sheetNum 上传表格需要读取的sheet 数量,默认为1
  78. * @return
  79. */
  80. public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass,Integer titleRows,Integer headRows,Integer sheetNum) throws IOException {
  81. ImportParams importParams = new ImportParams();
  82. if(null != titleRows) importParams.setTitleRows(0);
  83. if(null != headRows) importParams.setHeadRows(1);
  84. if(null != sheetNum) importParams.setSheetNum(1);
  85. try {
  86. return ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, importParams);
  87. } catch (Exception e) {
  88. throw new SystemException("导入excel失败:" + e.getMessage());
  89. // throw new RuntimeException(e);
  90. }
  91. }
  92. }