|
@@ -70,6 +70,11 @@ public class FormulaUtils {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 计算结果返回double类型
|
|
|
+ * @param formula
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public static double calculateFormula(String formula){
|
|
|
try {
|
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
|
@@ -92,5 +97,38 @@ public class FormulaUtils {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 计算结果返回String类型
|
|
|
+ * @param formula
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String calculateFormulaString(String formula){
|
|
|
+ try {
|
|
|
+ FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
|
|
+
|
|
|
+ Sheet sheet = workbook.createSheet();
|
|
|
+ Row row = sheet.createRow(0);
|
|
|
+ Cell cell = row.createCell(0);
|
|
|
+ cell.setCellFormula(formula);
|
|
|
+ cell.setCellType(CellType.FORMULA);
|
|
|
+
|
|
|
+ String value = evaluator.evaluate(cell).getStringValue();
|
|
|
+ log.info("计算结果:"+value+" = "+formula);
|
|
|
+ return value;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("FormulaUtils==excel公式解析异常: ", e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String va = calculateFormulaString("IF(AND(50<=50,50>=0),\"a\",IF(AND(50>50,50<=100),\"b\",IF(50>100,\"c\",\"\")))");
|
|
|
+ System.out.println(va);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|