首先需要准备一个excel
需要获取计算公式eval FormulaEvaluator
如果我们用没有计算公式的行,那么不会有用
package com.wyh.Test; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.junit.Test; import java.io.FileInputStream; import java.io.FileNotFoundException; /** * @program: JavaExecl * @description: excel计算公式 * @author: 魏一鹤 * @createDate: 2021-12-18 00:03 **/ public class ExcelCalculation { //全局路径,供我们操作使用方便 static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\"; @Test public void testFormula() throws Exception { //首先还是要获取路径 FileInputStream fileInputStream = new FileInputStream(path + "计算公式.xls"); //读取文件 Workbook workbook = new HSSFWorkbook(fileInputStream); //读取表 Sheet sheet = workbook.getSheetAt(0); //根据表拿出数据 //因为我们的需要计算的单元格在第五行 从0开始的 所以下标为4 //如果我们用没有计算公式的行,那么不会有用 Row row = sheet.getRow(4); //(第一行 4,1) Cell cell = row.getCell(0); //拿到计算公式 eval FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook)workbook); //输出单元格的内容 //获取类型进行便利 int cellType = cell.getCellType(); switch (cellType){ case Cell.CELL_TYPE_FORMULA://获取公式 String cellFormula = cell.getCellFormula(); System.out.println(cellFormula); //计算 CellValue evaValue=formulaEvaluator.evaluate(cell); String cellValue = evaValue.formatAsString(); System.out.println(cellValue); //结束循环 break; } } }
这样就能计算出sheet直接的结果了