Jexcel公式计算错误

时间:2012-06-03 16:43:28

标签: java excel formula jxl jexcelapi

我创建了一个工作表, out.xls ,其中单元格D6 = D5 * 2,D5设置为1.我的问题是当我在jxl中将值插入D5时,D6从不计算。当我在excel中插入1到D5时,D6只保留它最初计算的值。

注意:我有一个更大的编程问题,我试图解决,这只是一个非常小的版本,以减少错误。

这是我第一次使用Jexcel而且我去年刚刚学过java,所以任何帮助都会受到赞赏。我昨天花了6个小时试图在网上找到答案,但无济于事。

输出附在代码下面 代码:(省略主要和进口)

        WorkbookSettings custom= new WorkbookSettings();
        custom.setRationalization(true);
        custom.setRefreshAll(true);
        custom.setUseTemporaryFileDuringWrite(true);
        Workbook workbook = Workbook.getWorkbook(new File("out.xls"),custom); 


        WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook); 

        WritableSheet sheet2 = copy.getSheet(0); 
        SheetSettings customsheetsettings=new SheetSettings(sheet2);
        customsheetsettings.setAutomaticFormulaCalculation(true); 
        Number number = new Number(3, 4, 3);
        sheet2.addCell(number); 


        copy.write();
        copy.close(); 
        workbook.close();


        Workbook workbook2 = Workbook.getWorkbook(new File("output.xls")); 
        Sheet sheet=workbook2.getSheet(0);


        System.out.println("D5:"+sheet.getCell(3,4).getContents());
        FormulaCell formula5=(FormulaCell) sheet.getCell(3,5);
        System.out.println("Formula:"+formula5.getFormula());
        System.out.println("D6:"+formula5.getContents()); 

        NumberFormulaCell nfc=(NumberFormulaCell)sheet.getCell(3, 5); 
        System.out.println(nfc.getValue());  
        workbook2.close();

输出:

D5:3
Formula:D5*2.0
D6:2
2.0

2 个答案:

答案 0 :(得分:2)

JExcel仅允许读取或写入Excel文件,并提供Excel文件内容的Java表示。它不会替代Excel。

添加公式时,将在Excel中打开生成的文件时计算此公式,但仅在Excel中计算。该单元格不是由JExcel计算的。

答案 1 :(得分:0)

如果有其他人想知道,POI使用FormulaEvaluator类来做到这一点。

ATT