java poi 写入Excel后读取公式值问题

我用poi向excel中写入了一个值之后也重置了公式cell.setCellFormula(cell.getCellFormula);但是读取出来的值是0.0直接打开ex... 我用poi 向excel中写入了一个值 之后也重置了公式
cell.setCellFormula(cell.getCellFormula);
但是读取出来的值是0.0 直接打开excel文件后公式才能正确计算
如果要换成jxl才能做到的话麻烦各个例子谢谢;
poi 用的 3.7
cell.setCellFormula("A1-B1-C1"); cell.setCellValue(123);
改公式和改值两种都试了 取值用的 cell.getNumbericCellValue();
读出来都是0.0 公式不能正常计算
展开
 我来答
taotaitaisang
2012-11-13
知道答主
回答量:18
采纳率:0%
帮助的人:13万
展开全部
不用改公式,只需要用cell.getNumericCellValue()获取,读出来就是正确的值了,如果你读出来的还有问题,说明你其他的地方写的还有问题。
合标儒W
推荐于2017-09-04 · 知道合伙人养生行家
合标儒W
知道合伙人养生行家
采纳数:1030 获赞数:29892
就读于河南中医学院针灸推拿学,现为学生,读过医学类书籍近百本。

向TA提问 私信TA
展开全部
1 package hrds.zpf.poi;
2
3 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
4 import org.apache.poi.hssf.usermodel.HSSFSheet;
5 import org.apache.poi.hssf.usermodel.HSSFRow;
6 import org.apache.poi.hssf.usermodel.HSSFCell;
7
8 import java.io.*;
9
10 public class FormulaToString {
11
12 /**
13 * @param args
14 */
15 public void fileInput() throws IOException {
16
17 HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(
18 "d:/My Documents/Desktop/poi.xls"));
19 HSSFSheet hsheet = hw.getSheet("poi test");
20 HSSFRow hrow = hsheet.getRow(0);
21 HSSFCell hcell = hrow.getCell(0);
22 String cellValue = this.getCellValue(hcell);
23 System.out.println(cellValue);
24
25 }
26
27 public String getCellValue(HSSFCell cell) {
28 String value = null;
29 if (cell != null) {
30 switch (cell.getCellType()) {
31 case HSSFCell.CELL_TYPE_FORMULA:
32 // cell.getCellFormula();
33 try {
34 value = String.valueOf(cell.getNumericCellValue());
35 } catch (IllegalStateException e) {
36 value = String.valueOf(cell.getRichStringCellValue());
37 }
38 break;
39 case HSSFCell.CELL_TYPE_NUMERIC:
40 value = String.valueOf(cell.getNumericCellValue());
41 break;
42 case HSSFCell.CELL_TYPE_STRING:
43 value = String.valueOf(cell.getRichStringCellValue());
44 break;
45 }
46 }
47
48 return value;
49 }
50
51 public static void main(String[] args) {
52 try {
53 // TODO Auto-generated method stub
54 FormulaToString fts = new FormulaToString();
55 fts.fileInput();
56 } catch (IOException e) {
57 e.printStackTrace();
58 }
59 }
60
61 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lylegend13
2011-10-28 · TA获得超过4696个赞
知道大有可为答主
回答量:1701
采纳率:0%
帮助的人:1722万
展开全部
你好,我之前一直在研究poi和jxl,应该可以帮助你

“但是读取出来的值是0.0”,你说的这句话,是不是说,你用poi写了excel后,再读取excel时发现那个值是0.0?

“直接打开excel文件后公式才能正确计算”,这句话是不是说,直接打开excel文件后,双击那个你设置公式了但取值为0.0的单元格后,它又能用公式计算出正确的结果?
更多追问追答
追问
是的  我用poi写入excel后 并且重新设置了公式
再读取那个值就是0.0 (没有重设置公式也是0.0)

直接打开excel文件后 可以看到那个单元格的是显示的正确结果 不需要双击
但是不保存的话 再用poi读取出来的值还是0.0
追答
我明白了,完整过程是这样,你看对不对:
用poi在内存中创建了一个workbook(自始至终没有写成文件),然后在某个单元格设置了公式,然后直接读取这个workbook发现,那个单元格取值并没有按照公式来

这个我还没有试过呢,我一般读写都会通过已保存的文件来处理,我现在试试,马上告诉你结果
---------------------------------------------------------------------------------------------------------

你好,试过了,不保存的话得到的结果一直是0.0,看来非得保存后再读取。

或者可能的话,你既然知道公式,就当然知道是哪些值的计算结果,直接在内存中计算出来,不一定非得通过excel公式,也省下了保存excel再读取的麻烦
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YYDS墨斗者
2012-09-26 · 超过19用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:22.4万
展开全部
sheet.setForceFormulaRecalculation(true);可以这样 强制使用公式 不需要保存!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zq900226
2012-04-10 · TA获得超过500个赞
知道答主
回答量:130
采纳率:100%
帮助的人:100万
展开全部
我今天也遇到了这个问题,弄了半天,看API才找到了答案。

在你写入Excel之前,刷新一下这个工作表的公式就OK了。

HSSFFormulaEvaluator.evaluateAllFormulaCells(HSSFWorkbook workbook);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式