为什么excel中的泊松公式在java中不起作用?
我有一个excel文件,其中有一个使用泊松的公式。它在excel中运行良好,但我们有一个java程序,它使用ApachePOI读取excel文件中的值。公式不起作用的原因是什么?使用为什么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
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更改而更新。