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

参考文献

相关推荐
袁煦丞1 小时前
Archcraft程序员的轻量战甲:cpolar内网穿透实验室第469个成功挑战
前端·程序员·远程工作
阿杆1 小时前
我被Trae投诉了
程序员·trae
灵感__idea13 小时前
JavaScript高级程序设计(第5版):代码整洁之道
前端·javascript·程序员
用户47949283569151 天前
平时都在用,但是你不知道的VS Code黑科技:智能双击选择背后的原理
程序员·visual studio code
1点东西2 天前
新来的同事问我当进程/机器突然停止时,finally 到底会不会执行?
java·后端·程序员
BertieHuang2 天前
(一)深入源码,从 0 到 1 实现 Cursor
人工智能·python·程序员
reddish2 天前
用大模型“语音指挥”网站运维?MCP + Coze 实现无代码自动化管理实战
人工智能·程序员·架构
大模型教程2 天前
LM Studio本地部署Qwen3
程序员·llm·ollama
大模型教程2 天前
dify+MCP多应用,构建灵活的AI应用生态系统
程序员·llm·mcp
AI大模型3 天前
SwanLab入门深度学习:Qwen3大模型指令微调
程序员·llm·agent