【问题标题】:How to get value from the merged excel cell?如何从合并的excel单元格中获取价值?
【发布时间】:2018-05-02 17:51:17
【问题描述】:

需要帮助才能从 "List Price Total" 中获取合并的单元格值。 如上图所示,它是从第 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));
                }
            }
        }

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

【问题讨论】:

  • 通常对于合并的单元格,您需要获取最左上角的单元格以获得实际值
  • 它是一个 J 列。所以提到图像,你的意思是说应该从 J13 获取值。已经试过了,还是失败了!
  • 你确定这是一个合并的单元格吗?从图像上看,实际值似乎与$ 符号相差太远。可能实际值在K 列中? (虽然这是猜测,因为我们看不到列名)
  • 是的,我确定。它是一个合并的单元格。从 J13 到 J18。

标签: java excel apache-poi spreadsheet


【解决方案1】:

正如评论中提到的,只需参考最左上角的单元格,例如,如果范围 A2 到 C4 被合并,那么 =A2 的公式将返回合并单元格的内容,同样适用于宏。

【讨论】:

  • 只有 1 列 J + 6 行 13 到 18 。我可以获取代码以从 J13 ...J18 中获取值吗?我尝试获取 J13,但仍然无法获取值。
  • 对不起,您遇到了什么错误,不确定您的意思是您未能获得该值,正如@Vityata 所述,您可以选择合并的单元格以查看该返回单元格,在另一个单元格中同一张表只需执行 =J13 如果这不返回任何内容,则覆盖合并范围中的值作为测试以查看公式返回的内容。
【解决方案2】:
  1. 选择合并单元格区域;
  2. 在 Excel 中查看它指的是哪个单元格(红色箭头);
  3. 引用此单元格;

【讨论】:

  • 上面写着 J13 但价值仍然没有到来。问题可能出在公式评估器上吗?作为其公式单元格。
  • @user3662369 - 可以。尝试编写“测试”而不是公式并尝试一下。如果有效,那就是公式问题。
  • 但公式很简单 =SUM(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 - 是的,没有问题。但是,在合并的单元格中编写“测试”并尝试显示它仍然是一个好主意。成功后,将其替换为公式并尝试再次显示...
  • 这是我一直在尝试执行但将 listPrice 设置为 0.0 的代码.......................... ..................................................... ................................细胞 cell2Update = sheet.getRow(12).getCell(9); cell2Update.setCellType(Cell.CELL_TYPE_NUMERIC);双listPrice = cell2Update.getNumericCellValue();
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
相关资源
最近更新 更多