• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Java——使用EasyExcel导出动态列的Excel

武飞扬头像
前方一片光明
帮助1

有些时候列表的列可能是动态的,需要根据动态表头导出Excel文件,这时候可以使用下面的方法解决:

  1.  
    /**
  2.  
    * 使用EasyExcel导出动态Excel
  3.  
    * @param includeColumnFiledNames
  4.  
    * @param fileName
  5.  
    * @param list
  6.  
    * @param clazz
  7.  
    * @param response
  8.  
    */
  9.  
    public static void exportDynamicExcel(Set<String> includeColumnFiledNames, String fileName, List list, Class clazz, HttpServletResponse response) {
  10.  
    try {
  11.  
    ServletOutputStream os = response.getOutputStream();
  12.  
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  13.  
    response.setCharacterEncoding("utf-8");
  14.  
    String encodeFileName = new String(fileName.getBytes(), "ISO8859-1");
  15.  
    response.setContentType("application/octet-stream;charset=UTF-8");
  16.  
    response.setHeader("Content-Disposition", "attachment;filename=" encodeFileName ".xlsx");
  17.  
     
  18.  
    ExcelWriterBuilder excelBuilder = EasyExcel.write(os, clazz);
  19.  
    excelBuilder = includeColumnFiledName(includeColumnFiledNames, excelBuilder);
  20.  
    excelBuilder.useDefaultStyle(false).sheet(fileName).doWrite(list);
  21.  
    os.close();
  22.  
    } catch (IOException e) {
  23.  
    e.printStackTrace();
  24.  
    }
  25.  
    }
  26.  
     
  27.  
    private static ExcelWriterBuilder includeColumnFiledName(Set<String> includeColumnFiledNames, ExcelWriterBuilder excelBuilder) {
  28.  
    excelBuilder = excelBuilder.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy());
  29.  
    if (includeColumnFiledNames.size() > 0) {
  30.  
    excelBuilder = excelBuilder.includeColumnFiledNames(includeColumnFiledNames);
  31.  
    }
  32.  
    excelBuilder = excelBuilder.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy());
  33.  
    return excelBuilder;
  34.  
    }
学新通

扩展

静态列导出代码:

  1.  
    /**
  2.  
    * 使用EasyExcel导出Excel
  3.  
    */
  4.  
    public static void exportExcel(String fileName, List list, Class clazz, HttpServletResponse response) {
  5.  
    try {
  6.  
    String fileNameFull = fileName "(" TimeUtils.getTime() ")";
  7.  
    ServletOutputStream os = response.getOutputStream();
  8.  
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  9.  
    response.setCharacterEncoding("utf-8");
  10.  
    String encodeFileName = URLEncoder.encode(fileNameFull, "UTF-8");
  11.  
    response.setContentType("application/octet-stream;charset=UTF-8");
  12.  
    response.setHeader("Content-Disposition", "attachment;filename=" encodeFileName ".xlsx");
  13.  
    EasyExcel.write(os, clazz).useDefaultStyle(false).sheet(fileName).doWrite(list);
  14.  
    os.close();
  15.  
    } catch (IOException e) {
  16.  
    e.printStackTrace();
  17.  
    }
  18.  
    }
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggakhk
系列文章
更多 icon
同类精品
更多 icon
继续加载