3

我创建了一个工作表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
4

2 回答 2

2

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

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

于 2012-06-03T17:07:22.367 回答
0

如果其他人想知道,POI 使用 FormulaEvaluator 类来实现。

攻击者

于 2013-05-21T19:23:20.497 回答