Java 如何从合并的excel单元格中获取值?

Java 如何从合并的excel单元格中获取值?,java,excel,apache-poi,spreadsheet,Java,Excel,Apache Poi,Spreadsheet,需要帮助从“标价合计”中获取合并的单元格值。 如上图所示,它是一个从第13行到第18行的合并单元格。 我使用下面的代码来获取值,但仍然将其获取为null CellRangeAddress mergedCell = new CellRangeAddress(12, 17, 9, 9); int rowNum = mergedCell.getFirstRow(); int lastRow = mergedCell.getLastRow(); int colIndex = mergedCell.get

需要帮助从“标价合计”中获取合并的单元格值。 如上图所示,它是一个从第13行到第18行的合并单元格。 我使用下面的代码来获取值,但仍然将其获取为null

CellRangeAddress mergedCell = new CellRangeAddress(12, 17, 9, 9);
int rowNum = mergedCell.getFirstRow();
int lastRow = mergedCell.getLastRow();
int colIndex = mergedCell.getFirstColumn();
for (int rowCounter = rowNum; rowCounter < lastRow; rowCounter++) {
            Cell cell2Update = sheet.getRow(rowCounter).getCell(colIndex);
            cell2Update.setCellType(Cell.CELL_TYPE_NUMERIC);
            CellValue c = evaluator.evaluate(cell2Update);
            if (null != c) {
                Double lisPrice= c.getNumberValue();
                if (lisPrice> 0) {
                    spreadheetResultData.setListPricetotal(df.format(lisPrice));
                }
            }
        }
cellRangeAddressMergedCell=新的CellRangeAddress(12,17,9,9);
int rowNum=mergedCell.getFirstRow();
int lastRow=mergedCell.getLastRow();
int colIndex=mergedCell.getFirstColumn();
对于(int rowCounter=rowNum;rowCounter0){
setListPricetotal(df.format(lisPrice));
}
}
}

请帮助我获取合并单元格的值。

如注释中所述,只需参考最左上角的单元格,例如,如果合并了A2到C4的范围,则=A2的公式将返回合并单元格的内容,宏也是如此

  • 选择合并后的单元格区域
  • 在Excel中查看它引用的单元格(红色箭头)
  • 提交此单元格

    一般来说,对于合并单元格,您需要获取实际值的左上角最前面的单元格,即J列。因此,参考图像,您的意思是说应该从J13获取值。已经试过了,还是失败了!你确定那是一个合并的单元格吗?从图中可以看出,实际值似乎与
    $
    符号有点太远。实际值可能在列
    K
    中?(虽然这只是猜测,因为我们看不到列名)是的,我确定。它是一个合并的单元。从J13到J18。只有1列J+6行13到18。我可以获取代码以获取J13…J18的值吗?我尝试获取J13,但仍然无法获取值。对不起,您出现了什么错误,不确定您的意思是无法获取值,正如@vityta所述,您可以选择合并单元格以查看返回单元格,在同一工作表上的另一个单元格中,只需预执行=J13,如果这不返回任何值,覆盖合并范围内的值,就像测试公式返回的值一样。它显示J13,但仍然没有值。问题是否可能与公式计算器有关?作为其公式单元格。@user3662369-可以。试着写“Test”而不是公式,试一下。如果有效,这是一个公式问题。但公式是直接=和(D48、D63、D69、D85、D105、D114、D120、D143、D158、D164、D173、D188、D194、D206、D212、D266、D272、D287、D293、D305、D323、D359、D371、D54、D91、D149、D179、D311)。。。。我看不出这个公式有任何问题。@user3662369-是的,没有问题。但是,在合并的单元格中编写“test”并尝试显示它仍然是一个好主意。一旦成功,用公式替换它,并再次尝试显示它…这是我一直尝试执行的代码,但将listPrice设置为0.0…Cell cell2Update=sheet.getRow(12).getCell(9);cell2Update.setCellType(Cell.Cell\u TYPE\u NUMERIC);Double listPrice=cell2Update.getNumericCellValue();