随笔-126  评论-247  文章-5  trackbacks-0
jexcel
基于java的依赖于poi的excel读写包装
项目地址:
示例工程结构
pom.xml
<repositories>
  <repository>
    <id>lychie-maven-repoid>
    <url>https://raw.github.com/lychie/maven-repo/master/releasesurl>
  repository>
repositories>

<dependencies>
  <dependency>
    <groupid>org.lychiegroupid>
    <artifactid>jexcelartifactid>
    <version>1.0.1version>
  dependency>
dependencies>
写出excel
package org.lychie.jexcel.demo;

import java.io.file;
import java.util.list;
import java.util.arraylist;
import org.lychie.jexcel.writableexcel;
import org.lychie.jexcel.demo.model.employee;

/**
 * 写出对象到excel文档
 * 
 * @date 2015-01-21
 * 
@author lychie fan
 
*/
public class writeexcel {

    public static void main(string[] args) {

        // 创建一个可写的excel对象
        writableexcel excel = new writableexcel(getdata());
        // 设置pojo属性与excel单元格的映射关系
        excel.setmapper("id", "编号");
        excel.setmapper("name", "姓名");
        excel.setmapper("hiredate", "入职日期");
        excel.setmapper("salary", "薪资");
        // 将对象内容写出到excel文档
        excel.write(new file("src/main/resources/employee.xlsx"));

    }

    private static list getdata() {
        list list = new arraylist();
        list.add(new employee("杨忠杰"));
        list.add(new employee("叶水燕"));
        list.add(new employee("杨晓婷"));
        list.add(new employee("叶国珠"));
        list.add(new employee("何国群"));
        return list;
    }

}
结果图
设置写出的excel样式
public class writeexcel {

    public static void main(string[] args) {

        // 创建一个可写的excel对象
        writableexcel excel = new writableexcel(getdata());
        // 设置pojo属性与excel单元格的映射关系
        excel.setmapper("id", "编号");
        excel.setmapper("name", "姓名");
        excel.setmapper("hiredate", "入职日期");
        excel.setmapper("salary", "薪资");
        
        // 单元格值格式对象
        valueformat format = excel.getvalueformat();
        // 设置薪资显示格式为货币格式
        format.set("salary", valueformat.currency_format);
        // 主体对象
        body body = excel.getbody();
        // 设置单元格内容水平方向居中
        body.sethorizontalalignment(body.horizontal_center);
        
        // 将对象内容写出到excel文档
        excel.write(new file("src/main/resources/employee.xlsx"));

    }

}
结果图
读取excel文档
package org.lychie.jexcel.demo;

import java.util.list;
import org.lychie.jutil.ioutil;
import org.lychie.jutil.printer;
import org.lychie.jexcel.readableexcel;
import org.lychie.jexcel.demo.model.person;

/**
 * 读取excel文档
 * 
 * @date 2015-01-21
 * 
@author lychie fan
 
*/
public class readexcel {

    public static void main(string[] args) {

        // 创建一个可读的excel对象
        readableexcel excel = new readableexcel(person.class);
        // 设置pojo属性与excel单元格的映射关系
        excel.setmapper("id", "编号");
        excel.setmapper("age", "年龄");
        excel.setmapper("sex", "性别");
        excel.setmapper("name", "姓名");
        excel.setmapper("date", "生日");
        // 载入excel文档
        excel.load(ioutil.getresourceasstream("persons.xlsx"));
        // 解析excel文档成集合
        list list = excel.tolist();
        // 打印输出集合的内容
        printer.print(list);

    }

}
persons.xlsx
输出结果
读取excel文档,校验文档内容合法性
public class readexcel {

    public static void main(string[] args) {

        // 创建一个可读的excel对象
        readableexcel excel = new readableexcel(person.class);
        // 设置pojo属性与excel单元格的映射关系
        excel.setmapper("id", "编号");
        excel.setmapper("age", "年龄");
        excel.setmapper("sex", "性别");
        excel.setmapper("name", "姓名");
        excel.setmapper("date", "生日");
        // 载入excel文档
        excel.load(ioutil.getresourceasstream("persons.xlsx"));
        
        try {
            // 校验excel文档内容的合法性
            excel.validate(new basicvalidation());
        } catch (validationcastexception e) {
            e.printstacktrace();
            return ;
        }
        
        // 解析excel文档成集合
        list list = excel.tolist();
        // 打印输出集合的内容
        printer.print(list);

    }

}
persons.xlsx
输出结果
读取excel文档,自定义校验规则
public class readexcel {

    public static void main(string[] args) {

        // 创建一个可读的excel对象
        readableexcel excel = new readableexcel(person.class);
        // 设置pojo属性与excel单元格的映射关系
        excel.setmapper("id", "编号");
        excel.setmapper("age", "年龄");
        excel.setmapper("sex", "性别");
        excel.setmapper("name", "姓名");
        excel.setmapper("date", "生日");
        // 载入excel文档
        excel.load(ioutil.getresourceasstream("persons.xlsx"));
        
        try {
            // 校验excel文档内容的合法性
            excel.validate(new myvalidation());
        } catch (validationcastexception e) {
            e.printstacktrace();
            return ;
        }
        
        // 解析excel文档成集合
        list list = excel.tolist();
        // 打印输出集合的内容
        printer.print(list);

    }
    
    private static class myvalidation extends basicvalidation {

        @override
        public boolean validate(class type, string name, string value) {
            // 自定义校验规则, 在 super.validate 之前校验, 以达到短路父校验规则的目的
            if (name.equals("age")) {
                integer age = integer.valueof(value);
                if (age >= 18 && age < 55) {
                    return true;
                } else {
                    setcause("年龄不在 [18, 55) 区间");
                    return false;
                }
            }
            // 最后调父类校验方法
            return super.validate(type, name, value);
        }

    }

}
persons.xlsx
输出结果
资源
示例工程源码下载:(提取码:6398)





  
posted on 2015-01-22 09:38 fancydeepin 阅读(4888) 评论(2)  编辑  收藏

评论:
# re: jexcel 读写excel 2015-01-22 22:36 | 京山游侠
mark  回复  
  
# re: jexcel 读写excel 2015-02-04 20:19 |
吊炸天  回复  
  

只有注册用户后才能发表评论。


网站导航:
              
 
网站地图