gpt4 book ai didi

java - 使用 Apache Poi 从 Excel 工作表获取单元格值

转载 作者:行者123 更新时间:2023-12-01 17:19:32 25 4
gpt4 key购买 nike

如何在java中使用poi获取单元格值?

我的代码是这样的

String cellformula_total__percentage= "(1-E" + (rowIndex + 2) + "/" + "D" + (rowIndex + 2) + ")*100";
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellStyle(this.valueRightAlignStyleLightBlueBackground);
cell.setCellFormula("abs(" + cellformula_total__percentage + ")");

但是,如果在这种情况下,我如何检查我的单元格值是否包含像 #DIV/0 这样的错误值!我如何将其替换为 N/A

最佳答案

您必须使用 FormulaEvaluator,如图 here 。这将返回一个值,该值要么是单元格中存在的值,要么是公式的结果(如果单元格包含这样的公式):

FileInputStream fis = new FileInputStream("/somepath/test.xls");
Workbook wb = new HSSFWorkbook(fis); //or new XSSFWorkbook("/somepath/test.xls")
Sheet sheet = wb.getSheetAt(0);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();

// suppose your formula is in B3
CellReference cellReference = new CellReference("B3");
Row row = sheet.getRow(cellReference.getRow());
Cell cell = row.getCell(cellReference.getCol());

if (cell!=null) {
switch (evaluator.evaluateFormulaCell(cell)) {
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
System.out.println(cell.getErrorCellValue());
break;

// CELL_TYPE_FORMULA will never occur
case Cell.CELL_TYPE_FORMULA:
break;
}
}

如果您需要精确的内容(即,如果单元格包含公式,则为公式),则显示 here .

编辑:添加了一些示例来帮助您。

首先你得到单元格(只是一个例子)

Row row = sheet.getRow(rowIndex+2);    
Cell cell = row.getCell(1);

如果您只想使用公式将值设置到单元格中(不知道结果):

 String formula ="ABS((1-E"+(rowIndex + 2)+"/D"+(rowIndex + 2)+")*100)";    
cell.setCellFormula(formula);
cell.setCellStyle(this.valueRightAlignStyleLightBlueBackground);

如果您想在单元格中有错误时更改消息,则必须更改公式才能执行此操作,例如

IF(ISERR(ABS((1-E3/D3)*100));"N/A"; ABS((1-E3/D3)*100))

(此公式检查计算是否返回错误,然后显示字符串“N/A”,如果不是错误则显示计算)。

如果你想得到公式对应的值,那么你就必须使用求值器。

希望这有帮助,
纪尧姆

关于java - 使用 Apache Poi 从 Excel 工作表获取单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61321957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com