2012-06-03 128 views
3

我已經創建了一個工作表,out.xls其中有單元格D6 = D5 * 2和D5設置爲1.我的問題是,當我插入一個值到Jxl的D5,D6從不計算。當我在Excel中插入1到D5時,D6只保留它最初計算的值。Jexcel公式計算錯誤

注意:我有一個更大的編程問題,我試圖解決,這只是一個非常縮小的版本,以減少錯誤。

這是我第一次使用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

JExcel僅允許讀或者編寫Excel文件,並給出Excel文件內容的Java表示。它不會替代Excel。

添加公式時,將在Excel中打開生成的文件時計算此公式,但只能在Excel中計算。單元格不由JExcel計算。

+0

好的,謝謝。無論如何得到計算結果?對於我提到的較大的項目,我一直在嘗試採集各種數據,將它們插入到對其進行計算的工作表中,然後將結果放在工作表的其他位置。 Jexcel是否可以實現上述項目?我可以嘗試使用宏,但如果可能的話,我寧願使用java。 – user1433764

+0

恐怕不是。 JExcel不做任何計算。看來,宏是一個更好的選擇。 – Teetoo

+0

感謝您的意見。我會研究宏。 – user1433764

0

如果有其他人想知道,POI會使用FormulaEvaluator類來執行此操作。

Att