poi hssf 读取excel 公式 结果不正确 求助

hosterzck 2008-04-04 12:22:03
我用的是 excel2003

代码如下,但是 读出的结果是错误的


HSSFFormulaEvaluator.CellValue cellValue = evaluator.evaluate(cell);

这一行产生的结果就是错误的。


public class POIReader {



public static String fileToBeRead ="C:\\workspace\\POIReader\\SOLVSAMP.XLS";

public static void main(String[] args) {
// TODO Auto-generated method


try
{
FileInputStream fis = new FileInputStream(fileToBeRead);
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb);

// suppose your formula is in B3
CellReference cellReference = new CellReference("B5");
HSSFRow row = sheet.getRow(cellReference.getRow());
HSSFCell cell = row.getCell(cellReference.getCol());

evaluator.setCurrentRow(row);
HSSFFormulaEvaluator.CellValue cellValue = evaluator.evaluate(cell);



switch (cellValue.getCellType()) {
case HSSFCell.CELL_TYPE_BOOLEAN:
System.out.println(cellValue.getBooleanValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
System.out.println(cellValue.getNumberValue());
break;
case HSSFCell.CELL_TYPE_STRING:
String strValue = cellValue.getStringValue();
System.out.println(strValue);
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;

// CELL_TYPE_FORMULA will never happen
case HSSFCell.CELL_TYPE_FORMULA:
break;
}





}catch(Exception e)
{
System.err.println("running POIReader:" + e);
}
}

}
...全文
202 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hosterzck 2008-04-04
  • 打赏
  • 举报
回复
公式是

35*B3*(B11+3000)^0.5


poi的结果是完全从左到右计算,而不是先计算方根

怎么回事?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧