easyExcel 比poi 更加简单的 excel 解析工具
EasyExcel 写 excel 文件
easyexcel 文档地址: https://easyexcel.opensource.alibaba.com/
1 excel 的简单解析
ExcelRow 是自定义的用于接受一行数据的类,对应这一行数据的没一个字段或者说列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @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 的简单导出
1 2 3 4 5 6 7 8 | /** * 写无头的文件 */ @Test public void write() { ExcelWriterSheetBuilder sheet = EasyExcel.write( new File( "C:\\Users\\ZHANGYUKUN\\Desktop\\excel文件.xlsx" )).sheet(); sheet.doWrite( getData() ); } |
1 2 3 4 5 6 7 8 9 | /** * 写有头的文件 */ @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()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * 写有头的文件 */ @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(); } |
数据:
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 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; } |
模型:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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 阅读(472) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构