# excel-bean
**Repository Path**: milin/excel-bean
## Basic Information
- **Project Name**: excel-bean
- **Description**: excel-bean 主要功能是javabean与Excel数据行之间的互相转换,普通项目中都会有Excel的导入导出功能,使用该工具可以大大提高工作效率,使开发者不必关系复杂的Excel解析。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 11
- **Forks**: 3
- **Created**: 2020-05-08
- **Last Updated**: 2024-12-08
## Categories & Tags
**Categories**: excel-utils
**Tags**: None
## README


## 简介
- excel-bean 主要功能是javabean与Excel数据行之间的互相转换,普通项目中都会有Excel的导入导出功能,使用该工具可以大大提高工作效率,使开发者不必关系复杂的Excel解析。
## Maven方式使用
```xml
com.aimilin
excel-bean
{最新版本}
```
## 使用说明
- 有如图Excel表格
姓名|年龄|生日|语文分数|数学分数|总分|性别
-|-|-|-|-|-|-
张三|18|2016-05-20 10:20:39|100|99|199|男
李四|17|2016-03-20 19:23:16|20.09|87.7|107.79|女
王五|20|2016-01-12 18:33:28|33.5|33.3|66.8|男
测试1|30|2016-01-12 18:33:28|60|95|155|女
测试2|31|2016-01-13 18:33:28|61.1|80|141.1|男
- 定义JavaBean类型
```java
public class Student1 {
// 如果Excel标题和属性名称一样,则可以不使用注解
private String 姓名;
@ExlColumn("年龄")
// 对应Excel标题中的年龄列,以下类似
private Integer age;
@ExlColumn("生日")
// 日期类型,默认格式为 yyyy-MM-dd HH:mm:ss
private Date birthday;
@ExlColumn("语文分数")
private Double chineseScore;
@ExlColumn("数学分数")
private Double mathsScore;
@ExlColumn("总分") // 对应Excel中的公式,既 总分 = 语文分数 + 数学分数
private Double sumScore;
@ExlTransient //如果使用该注解,则该属性不写入到Excel中
private String className;//班级名称
//省略getter 和setter 方法
@Override
public String toString() {
return "Student1 [姓名=" + 姓名 + ", age=" + age + ", birthday=" + birthday + ", chineseScore=" + chineseScore
+ ", mathsScore=" + mathsScore + ", sumScore=" + sumScore + "]";
}
}
```
- 调用ExcelUtils 方法 将Excel转换成JavaBean对象列表
```java
@Test
public void testRead() {
List stu1List = ExcelUtils.read(excel2003, Student1.class);
log.debug("学生信息列表:" + stu1List);
}
```
- 输出以下结果:
```tex
学生信息列表:[Student1 [姓名=张三, age=18, birthday=Fri May 20 10:20:39 CST 2016, chineseScore=100.0, mathsScore=99.0, sumScore=199.0], Student1 [姓名=李四, age=17, birthday=Sun Mar 20 19:23:16 CST 2016, chineseScore=20.09, mathsScore=87.7, sumScore=107.79],
Student1 [姓名=王五, age=20, birthday=Tue Jan 12 18:33:28 CST 2016, chineseScore=33.5, mathsScore=33.3, sumScore=66.8],
Student1 [姓名=测试1, age=30, birthday=Tue Jan 12 18:33:28 CST 2016, chineseScore=60.0, mathsScore=95.0, sumScore=155.0],
Student1 [姓名=测试2, age=31, birthday=Wed Jan 13 18:33:28 CST 2016, chineseScore=61.1, mathsScore=80.0, sumScore=141.1]]
```
- 有时候导出Excel数据时会把相应的状态转换成可读的文字,例如数据库中性别存储的是1和2,导出Excel中需要时‘男’和‘女’,这时候可以使用@ExlColumn注解的dictionaries完成类型自动转换。在学生对象中添加如下代码:
```java
// 性别使用字典数据方式,自动转换
@ExlColumn(value = "性别",
dictionaries = {@Dictionary(name = "1", value = "男"),
@Dictionary(name = "2", value = "女"),
@Dictionary(name = "0", value = "未知") })
private Integer gender;
```
**使用方式说明,主要有以下几类方法**
> ExcelUtils.read
> ExcelUtils.read2List
> ExcelUtils.read2Map
> ExcelUtils.write
> ExcelUtils.write4List
> ExcelUtils.write4Map
- 主要的数据类型byte[],InputStream,String filePath等,可以很方便的再List,Map,Bean与Excel文件之间互转
## Contact and communication
- blog:http://my.oschina.net/java2010/blog
- email:aimilin@yeah.net
## License
Please follow the open source protocol [MIT]