Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么excel中的泊松公式在java中不起作用?_Java_Excel_Vba_Excel Formula_Apache Poi - Fatal编程技术网

为什么excel中的泊松公式在java中不起作用?

为什么excel中的泊松公式在java中不起作用?,java,excel,vba,excel-formula,apache-poi,Java,Excel,Vba,Excel Formula,Apache Poi,我有一个excel文件,其中有一个使用泊松的公式。它在excel中运行良好,但我们有一个java程序,它使用ApachePOI读取excel文件中的值。公式不起作用的原因是什么?使用apache poi 4.0.1POISSON函数与Excel公式一样有效 例如: import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkb

我有一个excel文件,其中有一个使用泊松的公式。它在excel中运行良好,但我们有一个java程序,它使用ApachePOI读取excel文件中的值。公式不起作用的原因是什么?

使用
apache poi 4.0.1
POISSON
函数与
Excel
公式一样有效

例如:

import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

class CreateExcelFormula {

 public static void main(String[] args) throws Exception {

  try (Workbook workbook = new XSSFWorkbook(); 
       FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {

   Sheet sheet = workbook.createSheet(); 
   sheet.createRow(0).createCell(0).setCellValue(2);
   sheet.createRow(1).createCell(0).setCellValue(5);
   sheet.createRow(2).createCell(0).setCellFormula("POISSON(A1,A2,TRUE)");

   FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
   DataFormatter dataFormatter = new DataFormatter(java.util.Locale.US);

   String cellValue = dataFormatter.formatCellValue(sheet.getRow(2).getCell(0), formulaEvaluator);
   System.out.println(cellValue);

   workbook.write(fileout);
  }
 }
}
这张照片

axel@arichter:~/Dokumente/JAVA/poi/poi-4.0.1$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* CreateExcelFormula.java 
axel@arichter:~/Dokumente/JAVA/poi/poi-4.0.1$ java -cp .:./*:./lib/*:./ooxml-lib/* CreateExcelFormula 
0.1246520195

得到的
Excel.xlsx
在单元格
A3

中包含公式
=POISSON(A1,A2,TRUE)
,您的声明是错误的。请看我的答案。我有这个问题的例子是:=POISSON(0,-0.19,FALSE)在excel中的值是1.2092,但在POI java中的值是#NUM@rlchaps26:公式
=POISSON(0,-0.19,FALSE)
产生
#在
Excel
中也有NUM
。请参阅:“如果平均值<0,POISSON将返回#NUM!错误值。”。是的,我已经读过了。。但您尝试使用Excel 2013。。或在线excel。结果值将为1。2092@rlchaps26:
Excel2007
返回
#NUM
如文档所示。因此,在
excel2013
Microsoft
中,违反了它自己的功能描述。那么,其他尝试遵循这些规则的软件会做什么呢?是的,这就是问题所在。因此,我假设POI未随Microsoft Excel更改而更新。