首页 > 编程语言 > 详细

java实现Excel定制导出(基于POI的工具类)

时间:2021-01-27 22:18:17      阅读:121      评论:0      收藏:0      [点我收藏+]

我的需求:

项目中有一些工程表格需要导出,设计到行列合并,定制样式,原有工具类冗余,内聚性强。所以想写一个可以随意定制excel的工具类,工具类满足需求:

  1. 对于常用的工程表格有模板格式,可以任意插拔。
  2. 可以操作任意一个sheet页,进行行列合并,逻辑可以根据业务调整。
  3. 可以对当前存储sheet页数据行进行数据动态插入,单元格操作。
  4. 有实用的输出方式,比如报文实体,字节数组等。
  5. 最后轻量,代码逻辑清晰,好维护。

我是这样做的:

  1. 在构建上基于建造者设计模式
  2. 将excel的构建逻辑抽象,将数据注入逻辑从构建逻辑中分离出来,采用函数式编程的方式。
  3. 实现了样式不同的多sheet页构建。

嗯,时间有限,没有优化代码,小伙伴们有好的想法可以留言。

代码见博客: https://blog.csdn.net/sanhewuyang/article/details/113191009?spm=1001.2014.3001.5501

使用方法:

public static void main(String[] args) {
 
        // 使用方法
        new WorkbookUtil()
                // 文件名称
                .setFileName(null)
                // TODO 初始化一个excel
                .initWorkbook()
                // TODO 初始化一个sheet页,可自定义逻辑,(HSSFWorkbook,String) ->{ HSSFSheet}
                .initSheet(null,null)
                // TODO 初始化sheet页表头 ,可自定义逻辑,(HSSFSheet,HeadDetails) ->{ HSSFSheet} 下同
                .initSheetHead(null,null,null,null)
                // 填充sheet页数据
                .setSheetData(null,null,null)
                // sheet页数据指定列合并行
                .setDataRowMerged(null,null,null)
                // sheet页数据指定相邻列合并,可以传入多值,(单行合并,值相同情况)
                .setDataCellMerged(null,null,null)
                // 当前sheet当前行插入数据  data :Map<Integer, String> (列索引,数据)
                .setSheetRow(null,null)
                // 当前sheet当前行强制合并    (firstCol,lastCol) 合并索引[必填]
                .setRowMerged(null,null)
                // 当前sheet指定行强制合并
                .setCellRangeAddress(null,null)
                // 初始化表尾
                .initSheetFoot(null,null)
                // TODO 第二个sheet页..
                .initSheet(null,null)
                .initSheetHead(null,null,null,null)
                .setSheetData(null,null,null)
                .initSheetFoot(null,null)
                .setDataRowAndCellMerged(null,null,null)
                //....
                // .builderByte()  输出字节数组
                // 直接写入报文
                .builderResponseEntity();
 
    }

具体的Demo:

基本的表格

技术分享图片

技术分享图片


简单的行列合并:

技术分享图片

技术分享图片


稍微复杂的行列合并:

技术分享图片

技术分享图片


代码

 

java实现Excel定制导出(基于POI的工具类)

原文:https://www.cnblogs.com/liruilong/p/14336923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!