困扰无数人的 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;
}

参考文献

相关推荐
陈随易12 小时前
bm2,MoonBit实现的pm2替代品
前端·后端·程序员
程序员cxuan16 小时前
A 社封杀了 1140 万个账号,下午 Claude 崩了。
人工智能·后端·程序员
阿里嘎多学长19 小时前
2026-07-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
孟陬1 天前
获Anthropic、OpenAI、Meta内部人士投资,Bespoke Labs完成4000万美元融资:更优质训练环境能否超越更大规模大模型?
程序员
怕浪猫1 天前
给女朋友添加一个分身吧
人工智能·程序员·aigc
SimonKing1 天前
Spring Boot 集成 OnlyOffice,5 分钟搞定 Word/Excel 在线编辑
java·后端·程序员
爱勇宝1 天前
悲观者永远正确,乐观者永远进步
前端·程序员
爱勇宝1 天前
《道德经》第 9 章:别把系统和自己都推到过载
前端·后端·程序员
码字的特恩2 天前
AI Agent Skill 工程化 09:让 Skill 自己变好——走向自进化流水线
人工智能·计算机·ai·程序员·大模型·互联网·编程
陈随易2 天前
MCP协议第5次更新,从打电话到微信聊天的巨大变革
前端·后端·程序员