我有一张excel表,其中包含许多列作为输入。我有另一张包含带表达式的列名的表。
示例 - 表达式表包含
{{CS_RRC_Successful (number)+PS_RRC_Sucessful (number)}*100},
其中CS_RRC_Successful
(数字)和PS_RRC_Sucessful
(数字)是输入表格中的列。
我应该如何使用poi
使用java
来评估这些表达式?
答案 0 :(得分:0)
“cellType”会告诉您它是否为公式。然后,调用getCellFormula()
if(theCell.getCellType()== Cell.CELL_TYPE_FORMULA)
{
String formulaVal = theCell.getCellFormula();
}
查看API文档,查看Cell上可用的其他公式相关方法。 https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html
答案 1 :(得分:0)
这只是一个示例代码,用于评估单元格的公式 - SUM(A1:B1)+10
。您必须将其替换为您正在使用的公式,并将单元格类型设置为数字(或您的Excel公式将返回的任何数据类型)。
见下面的例子:
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
//you will need to create the row in case you are making a new file.
Row row = sheet.getRow(0);
Cell cell2 = row.createCell(2);
//set cell formula
cell2.setCellFormula("SUM(A1:B1)+10");
//evaluate the formula
evaluator.evaluateFormulaCell(cell2);
//set the cell type to numeric
cell2.setCellType(Cell.CELL_TYPE_NUMERIC); //or CELL_TYPE_FORMULA
System.out.println(cell2.getNumericCellValue());
//write data to excel file
FileOutputStream out = new FileOutputStream(new File("res/Book1.xlsx"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");