easyExcel 比poi 更加简单的 excel 解析工具
EasyExcel 写 excel 文件
easyexcel 文档地址: https://easyexcel.opensource.alibaba.com/
1 excel 的简单解析
ExcelRow 是自定义的用于接受一行数据的类,对应这一行数据的没一个字段或者说列
@Test
public void read() {
List<ExcelRow> list = new ArrayList<>();
EasyExcel.read(new File("C:\\Users\\ZHANGYUKUN\\Desktop\\excel文件.xlsx"),ExcelRow.class, new ReadListener<ExcelRow>() {
@Override
public void invoke(ExcelRow o, AnalysisContext analysisContext) {
list.add(o);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).headRowNumber(0).doReadAll();
System.out.println(JSONObject.toJSONString( list ));
}
2 excel 的简单导出
/**
* 写无头的文件
*/
@Test
public void write() {
ExcelWriterSheetBuilder sheet = EasyExcel.write(new File("C:\\Users\\ZHANGYUKUN\\Desktop\\excel文件.xlsx")).sheet();
sheet.doWrite( getData() );
}
/**
* 写有头的文件
*/
@Test
public void write2() {
//ExcelRow 字段默认作为 head的 名字
ExcelWriterSheetBuilder sheet = EasyExcel.write(new File("C:\\Users\\ZHANGYUKUN\\Desktop\\excel文件.xlsx"),ExcelRow.class).sheet();
sheet.doWrite( getData() );
}
3 excel 的填充
1 单行填充
使用 {变量名字}
2 多行填充
垂直填充:FillConfig.builder().direction(WriteDirectionEnum.VERTICAL) 默认
水平填充: FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL)
使用 {.变量名字}
3 复合填充
强制换行:FillConfig.builder().forceNewRow(true).build()
/**
* 写有头的文件
*/
@Test
public void write3() throws FileNotFoundException {
File file = ResourceUtils.getFile("classpath:easyExcelTemple.xlsx");
//ExcelRow 字段默认作为 head的 名字
ExcelWriter excelWriter = EasyExcel.write( new File("C:\\Users\\ZHANGYUKUN\\Desktop\\excel文件.xlsx") ).withTemplate( file ).build();
WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
HashMap<String, String> map = new HashMap<>();
map.put("avg","avg80");
map.put("total","total99");
excelWriter.fill( getData(), FillConfig.builder().forceNewRow(true).build() ,writeSheet );
excelWriter.fill( map ,writeSheet );
excelWriter.finish();
}
数据:
public List<ExcelRow> getData(){
List<ExcelRow> list = new ArrayList<>();
ExcelRow excelRow = new ExcelRow();
excelRow.setId("1");
excelRow.setName("name1");
excelRow.setAge("age1");
excelRow.setHeadImage("headImage1");
list.add(excelRow);
ExcelRow excelRow2 = new ExcelRow();
excelRow2.setId("1");
excelRow2.setName("name1");
excelRow2.setAge("age1");
excelRow2.setHeadImage("headImage1");
list.add(excelRow2);
ExcelRow excelRow3 = new ExcelRow();
excelRow3.setId("1");
excelRow3.setName("name1");
excelRow3.setAge("age1");
excelRow3.setHeadImage("headImage1");
list.add(excelRow3);
return list;
}
模型:
public class ExcelRow {
@ExcelProperty(index = 0,value="Id")
private String id;
@ExcelProperty(index = 1,value="名字")
private String name;
@ExcelProperty(index = 2,value="年龄")
private String age;
@ExcelProperty(index = 3,value="头像")
private String headImage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getHeadImage() {
return headImage;
}
public void setHeadImage(String headImage) {
this.headImage = headImage;
}
}
excel模板样式:

4 单元格合并和样式修改
POI 读写 excel文件
1 三个版本的excel 文件对象
03,
07,
07优化版
2 读取
3 写入
4 excel样式修改
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2022-08-02 14:31 zhangyukun 阅读(517) 评论(0) 收藏 举报
浙公网安备 33010602011771号