文档章节

Java解析Excel之xlsmapper

 溪水涛
发布于 2016/04/12 16:13
字数 383
阅读 656
收藏 0

精选30+云产品,助力企业轻松上云!>>>

项目地址:https://github.com/mygreen/xlsmapper


具体使用参照 test/data/*.xlxs示例



XlsMapper

XlsMapper is Java Library for mapping Excel sheets to POJO.

  • Licensee

Apache License verion 2.0

Setup

<dependency>
    <groupId>com.github.mygreen</groupId>
    <artifactId>xlsmapper</artifactId>
    <version>1.4</version>
</dependency>

Documentation

http://mygreen.github.io/xlsmapper/sphinx/howtouse.html

Getting Started

For example, here is one Excel sheet.

Sample Excel

Map this Excel sheet to POJO.

  • Map the sheet with annotation @XlsSheet .

  • Map the cell 'Date' with annotation @XlsLabelledCell .

  • Map the table list 'User List' with annotation @XlsHorizontalRecords .

// POJO for mapping sheet.@XlsSheet(name="List")public class UserSheet {    @XlsLabelledCell(label="Date", type=LabelledCellType.Right)    Date createDate;    @XlsHorizontalRecords(tableLabel="User List")    List<UserRecord> users;

}

And the following is the record class.

  • Properties of the record class is mapped to columns by @XlsColumn .

  • Can map to int and enum type.

// Record classpublic class UserRecord {    @XlsColumn(columnName="ID")    int no;    @XlsColumn(columnName="Class", merged=true)    String className;    @XlsColumn(columnName="Name")    String name;    @XlsColumn(columnName="Gender")    Gender gender;

}// enum for the gender.public enum Gender {
    male, female;
}

You can get the mapped POJO using XlsMapper#load() like following:

// Load sheet with mapping to POJO.XlsMapper xlsMapper = new XlsMapper();UserSheet sheet = xlsMapper.load(    new FileInputStream("example.xls"), // excel sheet.
    UserSheet.class                     // POJO class.
    );

How to saving the sheet.

For example with saving the sheet, using same sheet.

Here is the template Excel sheet.

Sample Excel

And the following is the record class.

  • Append the annotation @XlsDateConverter for setting Excel format pattern.

  • Append the attribute overRecord with @XlsHorizontalRecords.

@XlsSheet(name="List")public class UserSheet {    @XlsLabelledCell(label="Date", type=LabelledCellType.Right)    @XlsDateConverter(excelPattern="yyyy/m/d")    Date createDate;    @XlsHorizontalRecords(tableLabel="User List", overRecord=OverRecordOperate.Insert)    List<UserRecord> users;

}

You can save the Excel with POJO using XlsMapper#save() like following:

// Create sheet data.UserSheet sheet = new UserSheet();
sheet.date = new Date();List<UserRecord> users = new ArrayList<>();// Create record data.UserRecord record1 = new UserRecord();
record1.no = 1;
record1.className = "A";
record1.name = "Ichiro";
record1.gender = Gender.male;
users.add(record1);UserRecord record2 = new UserRecord();// ...users.add(record2);

sheet.users = users;// Save the Excel sheet.XlsMapper xlsMapper = new XlsMapper();
xlsMapper.save(    new FileInputStream("template.xls"), // for template excel file.
    new FileOutputStream("out.xls"),     // for output excel file.
    sheet                                // for created sheet data.
    );


粉丝 0
博文 3
码字总数 1929
作品 0
广州
私信 提问
加载中
请先登录后再评论。
Java读写Excel

1、实现路径 实现说明 开源的方式只有两种:jxl和poi JXL只支持excel2003(.xls),所以一般使用POI来操作excel,因为POI功能更加强大:支持excel2007(.xlsx)以及之后版本 官网信息 Apache POI...

RUBG
2018/08/17
0
0
JXLS第一章——快速入门

1 介绍 Jxls是用于生成Excel报表的小型Java类库。Jxls使用特殊标记在Excel模板中定义输出格式和数据布局。 需要报表功能的Java应用程序都需要生成Excel。 Java有优秀的创建Excel文件的开源和...

Leech
2018/07/04
0
0
Java基础系列19:使用JXL或者POI生成和解析Excel文件

一 简介 如题所示,当我们需要在Java中解析Excel文件时,可以考虑使用JXL或POI的API来解析。 二者的区别如下: jxl现在基本上没被维护了,最近一次更新时间还是几年前。相反,poi属于Apache开...

pangfc
2016/12/07
0
0
原创 |我是如何解决POI解析Excel出现的OOM问题的?

背景 之前接手过一个解析Excel的项目,使用的是Java里的POI组件解析的,但是在解析时候经常出现OOM,后来我从下面几个方面优化了下,解决了99%的问题,对,你没看错,只解决了99%。 解决方案...

Java碎碎念
03/17
0
0
第一章——快速入门

1 介绍 jXLS是用于生成Excel报表的小型Java类库。jXLS使用特殊标记在Excel模板中定义输出格式和数据布局。 Java有优秀的创建Excel文件的开源和社区类库。值得关注的开源类库有Apache POI和J...

Leech
2018/07/11
386
4

没有更多内容

加载失败,请刷新页面

加载更多

MetadataException:无法加载指定的元数据资源 - MetadataException: Unable to load the specified metadata resource

问题: All of a sudden I keep getting a MetadataException on instantiating my generated ObjectContext class. 突然间,我在实例化生成的ObjectContext类时不断收到MetadataException 。......

fyin1314
今天
8
0
如何使用Java获取当前日期/时间 - How to get the current date/time in Java

问题: 用Java获取当前日期/时间的最佳方法是什么? 解决方案: 参考一: https://stackoom.com/question/LiRU/如何使用Java获取当前日期-时间 参考二: https://oldbug.net/q/LiRU/How-to-g...

富含淀粉
今天
14
0
SUSE收购Rancher Labs:押注云原生市场

导读:Gartner预测,到2024年,成熟的经济体中采用云原生应用程序和基础架构将使容器管理的使用率超过75%的大型企业,而2020年还不到35%。 7月8日,全球最大的独立开源公司SUSE获得收购Ran...

开源村OSV
今天
19
0
一文看尽飞桨PaddlePaddle最新升级:5大优势,更低门槛使用深度学习

本文作者:杨蕊1002 飞桨(PaddlePaddle)是国内唯一功能完备的端到端开源深度学习平台,集深度学习训练和预测框架、模型库、工具组件、服务平台为一体,其兼具灵活和效率的开发机制、工业级...

百度开发者中心
2019/07/17
16
0
Emacs和Vim之间的差异 - Differences between Emacs and Vim

问题: Without getting into a religious argument about why one is better than the other, what are the practical differences between Emacs and Vim? 在没有就为什么一个比另一个更好......

法国红酒甜
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部