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

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

作者: b06ee9db5ac0 | 来源:发表于2018-04-28 10:30 被阅读0次

    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文档的效果

    其中存在问题

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

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

    修改后的模板 生成Excel文档的效果

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

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

    生成Excel文档的效果

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/syowlftx.html