日期:2014-05-20  浏览次数:20894 次

java生成的excel文件怎么读取公式计算的值???
我的服务器是linux ,数据库Oracle

做了一个报表系统,具体步骤是:
1.定制一个excel模板(模板里有很多公式),上传到服务器。
2.统计分析数据插入到模板excel存放到服务器目录中。
3.读取excel文件,显示成网页(html)。

我用的主件是jxl,生成的excel是excel2000版本的,上面1和2步都正常,到第3步就出问题了,我统计分析写到excel的数据能正常读取出来,但通过公式计算的值就没办法显示出来。我打开生成的excel查看的时候又发现有值的,但后来查资料发现excel在处于保存状态的时候公式计算的值是不会计算的,只有在我们手动打开的时候公式才会去计算。

因为我本机装的是office2003 ,所以打开再关闭的时候会弹出提示 要求版本升级并且重新计算公式,如果选择“是”,再用程序读这个文件就没有问题可以读出公式计算的值了,如果选择“否”,用程序还是读不出公式计算的值哦。

因此我在想是否可以通过以下几种方案解决:

方案1:直接生成excel2003, 问题1是用什么主件,用poi?还是jxl?还是其他的?问题2是excel2003在保存状态下公式计算的值是否已被计算出来了。

方案2:在服务器上用程序把生成的excel2000升级到2003。问题是用什么方法可以实现这个功能。

方案3:用SOAOFFICE - 微软 OFFICE 中间件 来实现(这个没用过,如果建议我用这种方案的朋友请给出相关的参考资料)



别给 我说把excel的公式读出来转成java来计算好了再把值插入到excel,如果这样做就失去了利用excel公式强大功能的意义的。


大家有遇到过此类问题的都给小弟一点建议哦,最好说说解决方案,

请加我QQ 842656 我们好好探讨一下,小弟在此先谢过了。





补充一下:


我用的jxl的版本为2.6  
  我建一个excel文档,存放为 d:\Book1.xls  
  并在Book1.xls中设置值:  
  A1=100  
  B1=200  
  C1=SUM(A1:A2)  
   
  根据公式进行计算的话,C1的值应为300  
   
  但是我根据d:\Book1.xls生成了一个相同的Book2.xls以后,值也正常写入Book2.xls但是当取得Book2.xls中C1的值的时候,取出来的为0,没有得到公式的结果。  
   
  当我手工打开Book2.xls以后,不做任何修改Excel会提示:是否保存你对“Book2.xls”所做的更改?  
  Microsoft Excel打开由早期版本 Excel最后保存的文件时会自动重算所有公式。  
   
  进行保存,再次运行程序,C1计算后的值就以正常取得了。  
   
  运行结果如下:  
  //第一次生成excel情况  
  Sheet1  
  Formula in C1 value: 0.00 formula: SUM(A1:B1)  
  //第二次保存excel情况  
  Sheet1  
  Formula in C1 value: 300.00 formula: SUM(A1:B1)  
   
  如何让其第一次就可以取得值,不用人工进行干预就可以进行完成.我主要是想利用excel的公式来完成一些表格的计算.然后保存计算结果.  



------解决方案--------------------

------解决方案--------------------
这个真不知道 学习 等待中
------解决方案--------------------
不知道你用的jxl的版本是什么,我也遇到过,已经解决了,升级jxl到新版本就支持读取公式计算值了。

如果还找不到,周一回公司我看看我的代码。