POI 读取 Excel 合并单元格内容:完整解决方案
在处理包含合并单元格的 Excel 时,直接读取非左上角的单元格会返回空值(因为合并单元格仅左上角单元格保存数据)。本文将详细讲解如何识别合并单元格、读取合并区域的内容,并提供通用工具类,确保在各种合并场景下准确获取数据。
合并单元格的特性与读取难点
合并单元格的存储规则
Excel 中合并单元格(如 CellRangeAddress 定义的区域)仅在左上角第一个单元格中存储数据,其他被合并的单元格均为空。例如:
- 合并
A1:A3(3 行 1 列)后,仅A1有值,A2、A3为空; - 合并
B2:D4(3 行 3 列)后,仅B2有值,B3、C2等均为空。
直接读取的问题
若直接通过 row.getCell(column) 读取合并区域内的非左上角单元格,会返回 null 或空值,导致数据丢失。因此,需要:
- 先判断单元格是否属于合并区域;
- 若属于,则读取合并区域左上角单元格的值。
核心工具类实现
以下工具类提供合并单元格的判断、内容读取等功能,兼容 .xls 和 .xlsx 格式。