一、特点:jxls是一个轻量级的Java库,用于基于模板的Excel报表生成

二、依赖:

<dependency>
       <groupId>org.jxls</groupId>
       <artifactId>jxls-poi</artifactId>
       <version>2.12.0</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

三、工具封装方法参考

public static void exportExcel(HttpServletResponse response, Map<String, Object> varMap, String templateName) {
        OutputStream os = null;
        try {
            //InputStream is = new FileInputStream("d:/temp/" + templateName + ".xlsx");
            URL templateFileURL = JxlsUtil.class.getClassLoader().getResource("template/excel/" + templateName + ".xlsx");
            log.info(templateFileURL.getPath());
            InputStream is = new FileInputStream(templateFileURL.getPath());
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            //response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + templateName + ".xlsx");
            response.setHeader("Pragma", "public");
            response.setHeader("Cache-Control", "no-store");
            response.addHeader("Cache-Control", "max-age=0");
            //response.setHeader("Content-Length", is.available()+"");
            response.setContentType("application/octet-stream");
            os = response.getOutputStream();
            Context context = new Context(varMap);
            JxlsHelper jxlsHelper = JxlsHelper.getInstance();
            Transformer transformer = jxlsHelper.createTransformer(is, response.getOutputStream());
            jxlsHelper.processTemplate(context, transformer);
        } catch (IOException e) {
            log.error(e.toString());
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                }
            }
        }
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
public void export(HttpServletResponse response, WorkSiteMaterialOut workSiteMaterialOut)
    {
        
        Map<String, Object> mapRet = new HashMap<>();

        
        List<WorkSiteExportVO>list = workSiteService.selectWorkSiteExport(workSite);
 

        if(list!=null && list.size()>0) {
            Date nowDate = new Date();
            mapRet.put("list", list);
            mapRet.put("locationName", “xxxxxxx”); 
        }
        
         // 注意这里的mapRet中的list就是给jx:each(item="list")的中的list使用的
     
        JxlsUtil.exportExcel(response, mapRet, "WorkSiteMaterialOut");
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

说明:

1、定义模板的范围 jx:area

Java Excel处理库之JXLS_xml

2、索引 jx:each(items="list" var="e" varIndex="index" lastCell="C2")
        使用属性 varIndex 指定将保存从 0 开始的迭代索引的变量名称。

3、mapRet中的list就是给jx:each(item="list")的中的list使用的

mapRet.put("list", list);
  • 1.

以上是jxsl的基本使用 ,如需深入学习和使用请参考官网

 jxls - Welcome to jXLS