困扰无数人的 POI 读取合并单元格内容难题,终于有解了

POI读取合并单元格内容

产品们想到的excel真是千奇百怪,这次又遇到一个读取包含合并单元格的excel文件,一开始直接读取,直接报空了,没办法,只能对于这些列进行判断是否为合并单元格

java 复制代码
private boolean isMergedRegion(Sheet sheet, int row, int column) {
    int sheetMergeCount = sheet.getNumMergedRegions();
    for (int i = 0; i < sheetMergeCount; i++) {
        CellRangeAddress range = sheet.getMergedRegion(i);
        int firstColumn = range.getFirstColumn();
        int lastColumn = range.getLastColumn();
        int firstRow = range.getFirstRow();
        int lastRow = range.getLastRow();
        if (row >= firstRow && row <= lastRow) {
            if (column >= firstColumn && column <= lastColumn) {
                return true;
            }
        }
    }
    return false;
}

如果是合并单元格的话,使用单独的方法来进行读取

java 复制代码
public String getMergedRegionValue(Sheet sheet, int row, int column) {
    int sheetMergeCount = sheet.getNumMergedRegions();
    for (int i = 0; i < sheetMergeCount; i++) {
        CellRangeAddress ca = sheet.getMergedRegion(i);
        int firstColumn = ca.getFirstColumn();
        int lastColumn = ca.getLastColumn();
        int firstRow = ca.getFirstRow();
        int lastRow = ca.getLastRow();
        if (row >= firstRow && row <= lastRow) {
            if (column >= firstColumn && column <= lastColumn) {
                Row fRow = sheet.getRow(firstRow);
                Cell fCell = fRow.getCell(firstColumn,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
                return fCell.toString();
            }
        }
    }

    return null;
}

参考文献

相关推荐
SimonKing20 分钟前
甩掉手动赋值!MyBatis-Plus 自动填充实战秘籍
java·后端·程序员
袁煦丞33 分钟前
5分钟搭建高颜值后台!SoybeanAdmin:cpolar内网穿透实验室第648个成功挑战
前端·程序员·远程工作
我有一计33315 小时前
【算法笔记】5.LeetCode-Hot100-矩阵专项
人工智能·算法·程序员
AI大模型17 小时前
本地AI知识库问答开源技术实现(一)--安装和准备
程序员·llm·ai编程
AI大模型17 小时前
本地AI知识库问答开源技术实现(二)--配置模型和知识库
程序员·llm·agent
陈哥聊测试20 小时前
为什么公司规模越来越大,效率却越来越低?
程序员·产品·创业
redreamSo21 小时前
AI Daily | AI日报:Synthesia CEO:不招精英的AI视频独角兽; WAIC 2025大模型论坛:行业大佬硬核辩论; 毕树超:十年转变,深信AGI已至!
程序员·aigc·资讯
欧雷殿1 天前
中年人在 AdventureX 2025 的几日
黑客·程序员·创业
Goboy1 天前
弹窗大战15年祭,零信任iOA的枪口,正对准哪吒的方向盘
安全·程序员·产品
SimonKing1 天前
深入解析 Spring SpEL:SpelExpressionParser 的使用与实践
java·后端·程序员