【黑马程序员济南中心】使用jXLS导出Excel格式文档

jXLS是什么?

官方介绍:jXLS is a small and easy-to-use Java library for writing Excel files using XLS templates and reading data from Excel into Java objects using XML configuration.

哎呀这是什么呀,来点能看的懂的吧,这个大体的意思就是:jXLS是一个基于XML配置的小型,易于使用java类库,可以用来写Excel格式文档,也可以用来读取Excel格式文档中的数据。

通俗的说,在java程序中,我们可以基于Excel的模板和最终Excel文档中显示的数据,使用jXLS完成Excel格式文档的生成。这就要求我们在java程序中完成以下几项内容:

添加jXLS相关的jar包

在java程序中准备好需要生成到Excel文档中的数据

制作Excel格式的模板

编写基于jXLS的代码,把Excel模板和数据整合,生成Excel格式文档

基本使用

需求描述:把100名员工的信息(包含员工编号,员工姓名,员工性别,员工年龄,员工薪资)写入到Excel格式文档中。

实现

步骤一:创建一个maven工程,并添加依赖

net.sf.jxlsjxls-core1.0.6junitjunit4.12org.slf4jslf4j-log4j121.7.12

步骤二:编写员工信息实体类

public class EmployeeInfo {

        private String empNo;//员工编号

        private String empName;//员工姓名

        private String empSex;//员工性别:1代表男,0代表女

        private Integer empAge;//员工年龄

        private Double empSalary;//员工薪资

        public String getEmpNo() {

                return empNo;

        }

        public void setEmpNo(String empNo) {

                this.empNo = empNo;

        }

        public String getEmpName() {

                return empName;

        }

        public void setEmpName(String empName) {

                this.empName = empName;

        }

        public String getEmpSex() {

                return empSex;

        }

        public void setEmpSex(String empSex) {

                this.empSex = empSex;

        }

        public Integer getEmpAge() {

                return empAge;

        }

        public void setEmpAge(Integer empAge) {

                this.empAge = empAge;

        }

        public Double getEmpSalary() {

                return empSalary;

        }

        public void setEmpSalary(Double empSalary) {

                this.empSalary = empSalary;

        }

}

步骤三:模拟查询数据库得到100名员工的信息

public class EmployeeDao {

/**

* 模拟查询数据库得到100名员工的信息

* @return :100名员工的信息

*/

public ListfindEmployees(){ Listlist = new ArrayList();


                for(int i=1;i<=100;i++){

                        EmployeeInfo emp = new EmployeeInfo();

                        emp.setEmpNo(UUID.randomUUID().toString());//使用UUID生成随机

                        emp.setEmpName("员工姓名"+i);

                        emp.setEmpAge(new Random().nextInt(40));//随机生成年龄

                        emp.setEmpSex(i%2+"");//根据序号生成员工的性别

                        emp.setEmpSalary(new Random().nextDouble()*10000);//随机生成薪资


                        list.add(emp);

                }


                return list;

        }

}

步骤四:制作Excel文档模板,复制到程序中src目录下

       说明:在模板中使用jxls的表达式``,js:forEach的作用类似于jstl中的c:forEach,用来遍历集合,items的值要和步骤五中的map集合中的key值一致,var值是每次遍历得到的元素,取元素中的值使用 ${元素的名称} 格式的表达式。

步骤五:编写导出Excel文档的代码

public class ExportExcel { public void expExcelWithJxls() throws Exception{ //1、获取导出文档中的数据,存放到一个Map集合中 

 EmployeeDao empDao = new EmployeeDao(); 

 Listemployees = empDao.findEmployees(); Mapmap = new HashMap();

                map.put("emps", employees);


                //2、使用ClassLoader读取模板

                InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("emp_template.xlsx");


                //3、创建Excel文档转换器

                XLSTransformer xlsTransformer = new XLSTransformer();


                //4、基于数据和模板,转换成Excel文档

                //第一个参数是模板的输入流

                //第二个参数是需要生成到文档中的数据

                Workbook workbook = xlsTransformer.transformXLS(inputStream, map);


                //5、把Excel文档输出到指定位置

                FileOutputStream outputStream =  new FileOutputStream("d:/jxls/empInfo.xlsx");

                workbook.write(outputStream);

        }

}

步骤六:编写测试程序,测试导出员工信息的文档

public class ExcelTest {

        @Test

        public void exportExcel(){

                ExportExcel excel = new ExportExcel();

                try {

                        excel.expExcelWithJxls();

                } catch (Exception e) {

                        e.printStackTrace();

                        System.out.println("导出文档出现错误了,错误信息"+e.getMessage());

                }

        }

}

导出Excel文档的效果

【黑马程序员济南中心】使用jXLS导出Excel格式文档_第1张图片

其中存在问题

问题描述:从导出的Excel文档的效果可以看出其中的性别显示的1或者0,而正常情况下应该显示男或者女,接下来就需要对此问题进行修复

问题修复:使用jXLS提供的另一个指令,其作用是判断值,从而指定显示的内容

【黑马程序员济南中心】使用jXLS导出Excel格式文档_第2张图片
修改后的模板
【黑马程序员济南中心】使用jXLS导出Excel格式文档_第3张图片
生成Excel文档的效果

需求变更:在生成Excel文档的同时,计算出员工薪资总金额,以及平均值

若要完成该需求,只需要修改Excel模板,修改之后的模板


【黑马程序员济南中心】使用jXLS导出Excel格式文档_第4张图片
【黑马程序员济南中心】使用jXLS导出Excel格式文档_第5张图片
生成Excel文档的效果

你可能感兴趣的:(【黑马程序员济南中心】使用jXLS导出Excel格式文档)