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

参考文献

相关推荐
大模型教程7 分钟前
智能体变笨了是什么原因? 怎么优化?
程序员·llm·agent
大模型教程32 分钟前
检索增强生成(RAG)与大语言模型微调(Fine-tuning)的差异、优势及使用场景详解
程序员·llm·agent
AI大模型1 小时前
索引 ≠ 检索!RAG 高手都在用的六种知识表示方法
程序员·llm·agent
AI大模型1 小时前
用AI这么久了,你知道什么是大模型吗?看这里,3分钟让你入门
程序员·llm·agent
程序员西西5 小时前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员
申阳5 小时前
Day 15:01. 基于 Tauri 2.0 开发后台管理系统-Tauri 2.0 初探
前端·后端·程序员
SimonKing5 小时前
等保那些事
java·后端·程序员
CodeSheep6 小时前
VS 2026 正式发布,王炸!
前端·后端·程序员
程序员西西1 天前
SpringBoot轻松整合Sentinel限流
java·spring boot·后端·计算机·程序员
程序员西西1 天前
SpringBoot整合JWT实现安全认证
java·计算机·程序员·编程