java poi说明书,java实现Excel定制导出(基于POI的工具类)

我的需求:

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

对于常用的工程表格有模板格式,可以任意插拔。

可以操作任意一个sheet页,进行行列合并,逻辑可以根据业务调整。

可以对当前存储sheet页数据行进行数据动态插入,单元格操作。

有实用的输出方式,比如报文实体,字节数组等。

最后轻量,代码逻辑清晰,好维护。

我是这样做的:

在构建上基于建造者设计模式

将excel的构建逻辑抽象,将数据注入逻辑从构建逻辑中分离出来,采用函数式编程的方式。

实现了样式不同的多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 (列索引,数据)

.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:

基本的表格

简单的行列合并:

稍微复杂的行列合并:

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值