jxls读取模板导出Excel学习笔记

​ jxls是一个简单的、轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局。除此以外,java中成熟的excel导出工具有poi、jxl,但他们都是使用java代码的方式来导出excel,编码效率很低且不方便维护。

jxls的运行效率相对于 jxl、poi要慢,但导出数据量较小的时候使用它,可以加快编码的速度,毕竟用起来简单方便。

源码方法

最核心的方法是 jxls-core 的jar包中XLSTransformer 类,里面有transformXLS() 重载的三种形式,我只摘出了方法签名部分,如下:

/** 参数1:模板文件路径* 参数2:填入表格的对象数据* 参数3:输出文件的路径* 这个方法读取模板,写入数据,写入输出文件一起完成*/
public void transformXLS(String srcFilePath, Map beanParams, String destFilePath)
/** 参数1:模板文件输入流* 参数2:填入表格的对象数据* 返回工作簿对象,后续的write()写入输出文件流需要手动进行*/
public Workbook transformXLS(InputStream is, Map beanParams)
/** 与第二个方法类似,返回工作簿对象,后续的write()写入输出文件流需要手动     * 进行。看起来应该是支持往多个sheet页中填入数据*/
public Workbook transformXLS(InputStream is, List templateSheetNameList, List sheetNameList, List beanParamsList)

编码使用

定义好要填入表格的对象,通过beanParams传入transformXLS()

Map<String,Object> map = new HashMap<String,Object>();
map.put("department", MyDepartment);
transformer.transformXLS(srcFilePath, map, destFilePath);  

编写excel输出格式

a. 使用下面的语句来访问Excel单元格中简单的bean属性:

​${department.name}  // 注意department是Map中的key

Map中可以放多个队形,每个对象用各自的 name.perproty 访问即可。

访问任何深度的对象属性都是可以的。例如

${bean.bean1.bean2.bean3.bean4.bean5.bean6.bean7}

b. 多个属性在一个单元格中在一个单元格,我们可以连接几个属性。例如:

Employee: ${employee.name} - ${employee.age} years old

这样,我们得到的输出是:

Employee: John - 35 years 

c. : 用于迭代, 属性有2个, 一个是items, 一个是var, 类似java中的foreach循环,items表示集合,var表示集合中的单个对象。

如果你把jx:forEach标签的开始标签和结束标签放在同一行的话,JXLS会在同一行上重复在jx:forEach

标签的开始标签和结束标签之间的Excel单元格。 如果你想要用jx:forEach标签重复Excel的行,那么你必须把jx:forEach标签的开始标签和结束标签放在不同的行,把要重复的行包含在中间,jx:forEach标签本身所在行的所有单元格都会被忽略。

​ forEach标签的筛选功能 : 你可以用jx:forEach标签的‘select’属性来选择把哪些记录包含在循环中,例如,如果我们想只包含工资高于 2000元的员工,我们可以使用下面的语句:

<jx:forEach items="${employees}" var="employee" select="${employee.payment > 2000}"> {employee.name} | {employee.payment} | ${employee.bonus}
</jx:forEach>

items的值,employees对应放入map中的key,value是我们的数据对象。

更多用法可以参考百度文库

1.2 示例

a. bean

public class Fruit {   private String name; // 水果名称  private float price; // 水果价格  // getter setter
}

b. 核心工具类

public class ExcelUtil {  /** * 根据模板生成Excel文件. * @param templateFileName 模板文件. * @param list 模板中存放的数据. * @param resultFileName 生成的文件. */  public void createExcel(String templateFileName, List<?> list, String resultFileName){  try {   //创建XLSTransformer对象  XLSTransformer transformer = new XLSTransformer();  //获取java项目编译后根路径  URL url = this.getClass().getClassLoader().getResource("");  //得到模板文件路径  String srcFilePath = url.getPath() + templateFileName;  Map<String,Object> map = new HashMap<String,Object>();   map.put("list", list);  String destFilePath = url.getPath() + resultFileName;  //生成Excel文件  transformer.transformXLS(srcFilePath, map, destFilePath);  } catch (Exception e) {  throw new RuntimeException("error happens...", e);  }  }
}  

c. 测试类

public class Client {   public static void main(String[] args) {  List<Fruit> list = new ArrayList<Fruit>();  list.add(new Fruit("苹果",20.0f));  list.add(new Fruit("桔子",30.0f));  String templateFileName = "template.xlsx";  String resultFileName = "result.xlsx";  new ExcelUtil().createExcel(templateFileName,list,resultFileName);  }
}  

d. Excel表格
模板表格

导出的表格

jxls读取模板导出Excel学习笔记相关推荐

  1. jxls模板hashmap_JXLS根据模板导出Excel实例教程

    本文实例为大家分享了JXLS根据模板导出Excel实例的具体方法,供大家参考,具体内容如下 先做模板,做成想要的格式样子保存,然后通过程序根据模板生成对应样式的Excel文件,代码简单.什么连接数据库 ...

  2. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  3. C++操作Excel学习笔记

    C++操作Excel学习笔记 一: [当前博文转载自http://blog.csdn.net/fullsail/article/details/4067416] C++读取Excel文件方式比较 C+ ...

  4. java 根据excel模板导出excel

    java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: <dependency><groupId>or ...

  5. java 分析excel模板,java 根据excel模板导出excel

    java 根据excel模板导出excel 由于项目需求,最近做了一个需要根据查询接口导出excel表格数据的需求 pom依赖: org.apache.poi poi 3.16 org.apache. ...

  6. .Net NPOI 根据excel模板导出excel、直接生成excel

    一.根据Excel模板导出excel 1.导入NPOI.dll  2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...

  7. springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解

    提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并 ...

  8. 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000

    pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...

  9. 阿里easyexcel通过模板导出excel

    easyexcel通过模板导出excel 之前使用其他方式进行excel的导出,像poi或者freemarker或者Beetl,效果都还行,但是总是有一些小问题.许多的解决思路都是:通过制作excel ...

最新文章

  1. Python——eventlet.websocket
  2. Echart图表X轴为时间轴的解释
  3. windows 下使用caffy_折腾下Windows下的Elasticsearch安装与使用
  4. python能写软件吗-python可以编写什么软件
  5. Java后端架构开荒实战(二)——单机到集群
  6. 知乎超高赞:都有哪些习惯值得长期坚持?
  7. delphi 提示class tparamlistbox not found_通达信主图K线变色波段提示指标公式
  8. 炫天塔罗占卜结果......
  9. hibernate 第二天
  10. 根据xml文件生成对应javabean类
  11. python中使用连续关系运算符_解释一下Python中的关系运算符
  12. https方式nginx 代理tomcat访问不带www的域名301重定向跳转到www的域名帮助seo集中权重...
  13. python爬虫需要学哪些知识_Python爬虫需要学习那些东西?
  14. 关于MSN群 创建MSN群 使用MSN群
  15. Chrome浏览器主页被hao123、360和2345篡改恢复到默认的方法
  16. Vue的ESLint-stylelint-prettier联合配置
  17. Excel图表—超级好用的Bullet图(KPI考核图)
  18. 服务器系统关机了怎么办,各种服务器系统的关机
  19. 信息管理与信息系统考研专业方向计算机,信息管理与信息系统考研专业方向
  20. 基于Java Web的流浪猫狗救助网站

热门文章

  1. Vue学习笔记3.2-生命周期函数 beforeCreate、created、beforeMount、Mounted、beforeUpdate、updated、beforeDestroy、destro
  2. 超声波涉及到的主要概念
  3. 小米手机上ImageView加载超大本地图片不显示的问题
  4. ubuntu 14.04系统安装 Understand
  5. 常见的Python/数据库/大数据/网络爬虫面试题
  6. 广联达java面试题_广联达Java开发笔试复盘(7月22日)
  7. 《豪杰春香》and《萤火之森》
  8. Multiple constructors accepting all given System.Collections.Generic.List
  9. Is the server running on host localhost (::1) and accepting         TCP/IP connections on port 5
  10. 小刘同学的模拟IC(Razavi)-virtuoso ic618仿真记录