SargerasWang's Blog

我常常思考为什么鸟儿拥有整片天空,却常常停留在一个地方。然后我问了自己同样的问题。

ExcelUtil 1.2.1 Doc

GitHub地址

事实上,使用方式在 test 中有,因为有这个Issue,所以贴到这里来.

数据模型

通常可以使用你的数据表bean,当然如果需要导入/导出的字段与数据表差异很大,可以新增bean,当然也可以跳过bean,直接使用Map,下面是示例Bean:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Model {
    @ExcelCell(index = 0)
    private String a;
    @ExcelCell(index = 1)
    private String b;
    @ExcelCell(index = 2)
    private String c;
    @ExcelCell(index = 3)
    private Date d;

    public Date getD() {
        return d;
    }

    public void setD(Date d) {
        this.d = d;
    }

    public Model(String a, String b, String c,Date d) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
    }

    //setter and getter 省略...
}

导出-Bean方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    //用排序的Map且Map的键应与ExcelCell注解的index对应
    Map<String,String> map = new LinkedHashMap<>();
    map.put("a","姓名");
    map.put("b","年龄");
    map.put("c","性别");
    map.put("d","出生日期");
    Collection<Object> dataset=new ArrayList<Object>();
    dataset.add(new Model("", "", "",null));
    dataset.add(new Model(null, null, null,null));
    dataset.add(new Model("王五", "34", "男",new Date()));
    File f=new File("test.xls");
    OutputStream out =new FileOutputStream(f);

    ExcelUtil.exportExcel(map, dataset, out);
    out.close();

导出-Map方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map =new LinkedHashMap<>();
map.put("name", "");
map.put("age", "");
map.put("birthday","");
map.put("sex","");
Map<String,Object> map2 =new LinkedHashMap<String, Object>();
map2.put("name", "测试是否是中文长度不能自动宽度.测试是否是中文长度不能自动宽度.");
map2.put("age", null);
map2.put("sex", null);
map.put("birthday",null);
Map<String,Object> map3 =new LinkedHashMap<String, Object>();
map3.put("name", "张三");
map3.put("age", 12);
map3.put("sex", "男");
map3.put("birthday",new Date());
list.add(map);
list.add(map2);
list.add(map3);
Map<String,String> map1 = new LinkedHashMap<>();
map1.put("name","姓名");
map1.put("age","年龄");
map1.put("birthday","出生日期");
map1.put("sex","性别");
File f= new File("test.xls");
OutputStream out = new FileOutputStream(f);
ExcelUtil.exportExcel(map1,list, out );
out.close();

导入

ExcelUtil.importExcel 方法的第一个参数,是个Class,如果你有Bean,就写Bean的Class,反之,直接Map.class

XLS 文件
1
2
3
4
5
6
7
8
9
File f=new File("src/test/resources/test.xls");
InputStream inputStream= new FileInputStream(f);

ExcelLogs logs =new ExcelLogs();
Collection<Map> importExcel = ExcelUtil.importExcel(Map.class, inputStream, "yyyy/MM/dd HH:mm:ss", logs , 0);

for(Map m : importExcel){
  System.out.println(m);
}
XLSX 文件
1
2
3
4
5
6
7
8
9
File f=new File("src/test/resources/test.xlsx");
InputStream inputStream= new FileInputStream(f);

ExcelLogs logs =new ExcelLogs();
Collection<Map> importExcel = ExcelUtil.importExcel(Map.class, inputStream, "yyyy/MM/dd HH:mm:ss", logs , 0);

for(Map m : importExcel){
  System.out.println(m);
}