栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您必须使用Formulaevaluator,如图所示这里。如果单元格包含这样的公式,它将返回一个值,该值要么是单元格中存在的值,要么是公式的结果:

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 B3CellReference 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;    }}

如果您需要精确的内容(例如,如果单元格包含公式,则为formla),则在此处显示。

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

首先,您获得了单元格(仅作为示例)

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”,或者如果评估不是错误,则显示评估)。

如果要获取与公式对应的值,则必须使用评估器。

希望能有所帮助,
纪尧姆



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号