乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > java <em>poi</em> 写入Excel后读取公式值问题-poi excel解析,po

java <em>poi</em> 写入Excel后读取公式值问题-poi excel解析,po

作者:乔山办公网日期:

返回目录:excel表格制作


参考e799bee5baa6e79fa5e98193e59b9ee7ad94365代码
public void getValueOfFormulaCell() throws IOException
{
FileInputStream xlsfile = new FileInputStream(new File("D:\\Desktop\\Temp\\marks.xls"));
HSSFWorkbook objWorkbook = new HSSFWorkbook(xlsfile);
Sheet sheet = objWorkbook.getSheetAt(0);
FormulaEvaluator evaluator = objWorkbook.getCreationHelper().createFormulaEvaluator();

// suppose your formula is in B4
CellReference cellReference = new CellReference("B4");
Row row = sheet.getRow(cellReference.getRow());
Cell cell = row.getCell(cellReference.getCol());

CellValue cellValue = evaluator.evaluate(cell);

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

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

你好,我之前一直在研究poi和jxl,应该可以帮助你

“但是读取出来的值是0.0”,你说的这句话,是不是说,你用poi写了excel后,再读取excel时发现那个值是0.0?

“直接打开excel文件后公式才能正确计算”,这句话是不是说,直接打开excel文件后,双击那个你设置公式了但取值为0.0的单元格后,它又能用公式计算出正确的结果?
你不要自己重新建一个workbook,直接用io读取到的源文件,创建的对象进行修改应该就没问题了吧

获取公式值可用 HSSFFormulaEvaluator e= New HSSFFormularEvaluator(workbook);
e.evaluate(cell).getNumberiValue.
如果不是你要的结果。还有zd其它很多方法。
比如这样一个比较笨的方法。
double value = cell.getNumericCellValue();
value = value * 24 *3600;
int h = (int) (value /3600)
int m= (int )((value - h* 3600) /60);
int s = (int)(value-h*3600 -m* 60) ;
String result = h + ":"+m + "s" ;
得到结果。
手机打字,格式将就看吧。

相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网