poi 导出excel2007的时候,自动执行excel中的公式?

poi 导出excel2007的时候,数据可以写入excel,但是之前excel存储的计算公式不执行,需要把导出的数据在重新手动写一次,才执行公式,怎么解决,让它自动导出的时候之后就执行公式?

八种情况:
1、一般输入公式就得出结果,引用公示结果的话,需刷新数据;
2、数据是否设成了文本格式?如是,请设置为常规或数值格式然后双击该单元格后回车;
3、电脑反应太慢,按F9强制重新计算;
4、使用替换将=替换成=,按回车执行;
5、工具\选项\重新计算\选自动计算;
6、引用的poi3.7的包 不支持,sheet.setForceFormulaRecalculation(true);换成3.8的包
7、使用cell.setCellFormula方法重新在制定Cell里写入公式。
8、使用sheet.setForceFormulaRecalculation(true);方法强制让改Sheet执行公式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
五种情况:
1、举个例子看呢,一般输入公式就得出结果啊,引用公示结果的话,你刷新下数据看看;
2、看看你的数据是不是设成了文本格式?如是请设置为常规或数值格式然后双击该单元格后回车;
3、如果还不行的话那是电脑反应太慢,你可以按F9就可以重新计算了;
4、先输入=,再输入公式,最后按回车执行;

5、工具\选项\重新计算\选自动计算,是否为自动重算;

希望帮到你。追问

恩,我自己已经解决了,我之前引用的poi3.7的包 不支持,
sheet.setForceFormulaRecalculation(true);换成3.8的包就好使了,不过还是谢谢的你回答。

本回答被提问者和网友采纳
第2个回答  推荐于2020-03-24
五种情况:
1、举个例子看呢,一般输入公式就得出结果,引用公示结果的话,刷新下数据看看;
2、看看数据是不是设成了文本格式,如是请设置为常规或数值格式然后双击该单元格后回车;
3、如果还不行的话那是电脑反应太慢,可以按F9就可以重新计算了;
4、先输入=,再输入公式,最后按回车执行;
5、工具\选项\重新计算\选自动计算,是否为自动重算;
第3个回答  2016-01-12
是的,详细代码如下:
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 }