2012-06-03 108 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