JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活简单。
下载地址: http://sourceforge.net/projects/jxls/files/jxls/1.0.6/
下面通过一个简单的实例来描述其常规应用。生成某班级学生信息的报表,首先我们得新建一个Student类,比如有姓名(name), 性别 (sex), 年龄(age)这三个属性。
public class Student { private String name; private String sex; private String age; public Student(String name, String sex, String age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
其次得有个XLS模板来设计数据render的逻辑(因为JXLS生成报表数据都是根据XLS模板的表达式来渲染的)
好,现在我们来写个测试方法
@Test public void testGenerateReportByJXLS() throws ClassCastException, Exception { /* Mock testing data */ List<Student> studentList = new ArrayList<Student>(); Student stu1 = new Student("ALEX", "MALE", "27"); Student stu2 = new Student("WILL", "MALE", "23"); Student stu3 = new Student("FELIX", "MALE", "30"); studentList.add(stu1); studentList.add(stu2); studentList.add(stu3); /* build important parameter 'beansMap'*/ Map<String, Object> beansMap = new HashMap<String, Object>(); beansMap.put("stus", studentList); XLSTransformer transformer = new XLSTransformer(); transformer.transformXLS("C:/student.xls", beansMap, "C:/student_result.xls"); }
transformXLS方法中第一个参数是模板的位置。第二个参数是beansMap,它可以是多个key-value组合,key即是模板中对应的表达式值,比如这里的${stus},value可以是一个对象集合也可以是一个对象实例。第三个参数是生成最终文件的地址。
结果:
如果这个时候需要在报表的上面显示班级的具体信息,比如学院,专业,班级等,这时候要新增一个类来描素这些信息,并且修改原有模板。
public class Grade { private String college; private String specialities; private String className; public Grade(String college, String specialities, String className) { super(); this.college = college; this.specialities = specialities; this.className = className; } public String getCollege() { return college; } public void setCollege(String college) { this.college = college; } public String getSpecialities() { return specialities; } public void setSpecialities(String specialities) { this.specialities = specialities; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } }
@Test public void testGenerateReportByJXLS() throws ClassCastException, Exception { /* Mock testing data */ List<Student> studentList = new ArrayList<Student>(); Student stu1 = new Student("ALEX", "MALE", "27"); Student stu2 = new Student("WILL", "MALE", "23"); Student stu3 = new Student("FELIX", "MALE", "30"); studentList.add(stu1); studentList.add(stu2); studentList.add(stu3); Grade grade = new Grade("College of software", "computer science", "Class 7"); /* build important parameter 'beansMap'*/ Map<String, Object> beansMap = new HashMap<String, Object>(); beansMap.put("stus", studentList); beansMap.put("grade", grade); XLSTransformer transformer = new XLSTransformer(); transformer.transformXLS("C:/student.xls", beansMap, "C:/student_result.xls");
好!问题来了,是不是以后这个模板要加新的信息进来,比如任课老师的信息,或者说新建别的模板显示学校老师的信息报表,那我们是不是又得去新建对应的java类,比如teacher.java.
如果是这样的话,每次新加新的报表,都得部署服务,重启服务(因为涉及到code的改动),显然在现实场景中这是非常不可取的,那又有什么方法能解决上述的问题呢?在下篇会介绍JXLS的应用扩展。
相关推荐
非常好用!我们项目上用的就是这个!但是,缺失jar文件,若用心找jar就能用哦!
jxls1.0.5报表工具
使用Apache开源POI和jXLS两种API生成报表
通过jxls基于poi技术上传excel报表,再将excel转换为html页面
jxls教程 使用Java操作Excel,创建模板生成 jxls教程 使用Java操作Excel,创建模板生成
jxls生成并导出excel所需jar包
NULL 博文链接:https://tangzongyun.iteye.com/blog/2389782
jxls利用模板生成excel文件, 非常方便
jXLS是一个小而易用的Java库,它用于根据XLS模板文件生成Excel数据文件,或者根据XML配置文件从Excel文件中读出数据。 jXLS的功能是:只使用几行代码就可以建立极端复杂的Excel报表。你所需要实现的大部分工作是...
jxls2.0支持合并单元格和合并单元格模板写入数据,jar包里已经包含了pom.xml,可以自行解压方便上传到maven私服,这种方式会带上依赖,否则要一个个手动添加依赖.pom在jar包里jxls-core\2.0\jxls-core-2.0\META-INF\...
jxls1.0/2.0官网示例 jxls1.0适合做一些简单的excel格式 jxls2.0支持复杂excel格式
jxls自己写的简单实例,支持横向 纵向排序,jxls-0.9.8
。。。
jxls模板导出Excel所用的jar,jxls数据导入
用Jxls实现数据导入excel实例java代码
jxls2.3 官网最新下载 包含例子、文档 、jar
jxls poi jxls-2.2.9.zip
官方jxls-官方jxls-2.4.1官方jxls-2.4.1官方jxls-2.4.1官方jxls-2.4.1官方jxls-2.4.12.4.1官方jxls-2.4.1
jxls功能的开发,关于自定义模板和数据封装,已经数据生成