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

参考文献

相关推荐
SimonKing1 小时前
告别传统读写!RandomAccessFile让你的Java程序快人一步
java·后端·程序员
大模型开发2 小时前
Java开发者LLM实战——使用LangChain4j构建本地RAG系统
程序员·langchain·llm
京东云开发者3 小时前
企业和个人基于业务知识和代码库增强的大模型生成代码实践
程序员
redreamSo6 小时前
AI Daily | AI日报:DeepMind:AI设计药物开启人体试验; Cluely创始人:先传播,AI产品开发新思路; 博主檄文怒批英伟达显卡及销售问题
程序员·aigc·资讯
狗头大军之江苏分军7 小时前
疑似华为盘古AI大模型翻车造假风波【实时记录篇】
人工智能·机器学习·程序员
CodeSheep8 小时前
小米汽车这薪资是认真的吗?
前端·后端·程序员
AI大模型9 小时前
COZE实战部署(四)—— coze实战部署
程序员·llm·coze
马可奥勒留20 小时前
《你以为职场是过家家?真正的高手都在用「职业化人际关系模型」》
程序员
袁煦丞20 小时前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作
codeGoogle21 小时前
不吹不黑理性讨论:疑似华为员工匿名指控盘古大模型造假,你怎么看?
程序员