zoukankan      html  css  js  c++  java
  • SpringBoot+Jxls

    一、简单文件导出
    1.导入jar包
    <!-- https://mvnrepository.com/artifact/org.jxls/jxls -->
    <dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.6.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.jxls/jxls-poi -->
    <dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>2.6.0-rc1</version>
    </dependency>
    2.编码
    Context context = new Context();
    context.putVar("EntityVos",EntityVos);
    response.setHeader("content-type", "application/octet-stream");
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-Disposition", "attachment;fileName=" + new String(("***.xls").getBytes(),"ISO-8859-1"));
    JxlsHelper.getInstance().processTemplate(fis, response.getOutputStream(), context);
    3.模板
      第一个单元格添加批注 jx:area(lastCell=”L3”) jxls解析模板面积到3行L列
      第一行数据添加备注 jx:each(items=”
    EntityVos”,var=”EntityVo”,lastCell=”L3”) 行数据解析到3行L列

    二、复杂文件导出
    黑龙江 鸡西 密山
    虎林
    哈尔滨 松北区
    辽宁 沈阳 浑南区

    1.导入jar包
    <dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.6.0</version>
    </dependency>
    <dependency>
    <groupId>net.sf.jxls</groupId>
    <artifactId>jxls-core</artifactId>
    <version>1.0.6</version>
    </dependency>
    2.编码
    public class MergeVo {
    private int fromRow;
    private int toRow;
    private int fromIndex;
    private int toIndex;
    }
    //读取jar包resource下的文件 正常无法拿到
    InputStream is = this.getClass().getResourceAsStream("/static/template.xls");
    Map<String, Object> beans = new HashMap();
    /**
    * analysis为排好序的数据对象 如下
    * 黑龙江 鸡西 密山
    * 黑龙江 鸡西 虎林
    * 黑龙江 哈尔滨 松北区
    * 辽宁 沈阳 浑南区
    */
    beans.put("EntityVos", analysis);
    XLSTransformer transformer = new XLSTransformer();
    HSSFWorkbook workBook = (HSSFWorkbook) transformer.transformXLS(is, beans); // 传入模板的输入流和map
    // 开始进行合并单元格
    HSSFSheet sheet = workBook.getSheetAt(0);
    HashMap<String,List<MergeVo>> merge = getMerge(analysis);
    List<MergeVo> provinceMerge = merge.get("provinceMerge");
    List<MergeVo> cityMerge = merge.get("cityMerge");
    for (MergeVo m : provinceMerge) {
    sheet.addMergedRegion(new CellRangeAddress(m.getFromRow() + 2, m.getToRow() + 2, 0, 0));
    }
    for (MergeVo m : cityMerge) {
    sheet.addMergedRegion(new CellRangeAddress(m.getFromRow() + 2, m.getToRow() + 2, 1, 1));
    }
    response.setHeader("content-type", "application/octet-stream");
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-Disposition", "attachment;fileName=" + new String(("询价分析.xls").getBytes(),"ISO-8859-1"));
    workBook.write(response.getOutputStream());
    3.模板

     jx:area(lastCell="N5")

    <jx:forEach items="${EntityVos}" var="entity">

    <jx:forEach>

     
  • 相关阅读:
    几种委托的解释
    Python中的编码风格
    Python的循环
    Python中操作文件
    Python的random模块、string模块、time模块、os模块
    Python中的函数
    Python的数据类型
    使用iview Form 的resetFields()在f12下报错
    滚动条的滚动距离
    编程学习之资源
  • 原文地址:https://www.cnblogs.com/god-monk/p/11322197.html
Copyright © 2011-2022 走看看