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

参考文献

相关推荐
SamDeepThinking8 小时前
为什么我会主动给一个年轻程序员加薪、晋升?
java·后端·程序员
AI小码9 小时前
WAIC 2026前瞻:AI产业进入拼落地的下半场
人工智能·算法·ai·程序员·大模型·编程·智能体
zzzll111110 小时前
LangChain实战-RAG问答机器人
学习·计算机·程序员·大模型
Coffeeee11 小时前
22道AI Agent 工程师必会的面试题,别啥都不会就出去找工作
程序员·agent·ai编程
AskHarries12 小时前
用 OpenClaw 做网页调研:搜索、打开网页、提取信息和生成报告
程序员
达达尼昂13 小时前
编码智能体中的模型选择与执行深度
人工智能·后端·程序员
程序员cxuan14 小时前
Cursor 掀桌子了,Grok 4.5 这次要上天了?
人工智能·后端·程序员
碎_浪1 天前
给键盘党的英语记忆工具:我做了一款「打字背单词」桌面应用
前端·程序员·ai编程
烬羽1 天前
还在手动拼路径、写回调地狱?一文吃透 Node.js 的 path 和 fs
javascript·程序员·node.js
天赐印记1 天前
从 Hexo 到前后端,再到现在这个「不用伺候服务器」的个人站
人工智能·程序员