1

好的,这有点难以解释。

我使用 JAVA POI 在我的工作表中创建了一个单元格

  newCell= row.getCell(index)
  if (containerCell == null) {
          containerCell = row.createCell(index)
  }
  newCell.setCellType(HSSFCell.CELL_TYPE_STRING)
  newCell.setCellValue(strVar)

如果我然后在 EXCEL 中打开工作表,我会看到确实设置了单元格值。但是,如果我将它加载到另一个读取 EXCEL 表格的外部程序中,它会声称我刚刚设置的单元格是空白的。

现在,如果我回到 excel 并在有问题的单元格上执行简单的“点击返回”,在公式栏中(即使它不是公式)并尝试将其重新加载到外部程序中,它工作正常。我需要评估字符串上的公式吗?

谢谢

4

2 回答 2

1

我没有使用 Java 的经验,但必须在单元格中按 Enter 通常表示计算设置为手动。由于您使用的是 API,它可能会将您从 Java 中输入的内容视为公式 (?)。

以损坏的状态打开有问题的工作簿,然后在您遇到问题的工作表上选择顶部的 [公式] 选项卡,然后选择 [计算]> 计算工作表。

如果这会更新值,那么我会看到两个选项...

输入值后,查看是否有使用 POI 手动计算工作表的选项。

或者,您可以只编写一点点VBA 来在打开工作簿时在该工作表上强制计算。MSDN 提供了一个简单的例子。

http://msdn.microsoft.com/en-us/library/office/aa223802%28v=office.11​​%29.aspx

对于必须将计算设置为手动以避免过多开销的 Excel 应用程序,我必须这样做。虽然只是猜测..

于 2013-07-31T18:56:18.183 回答
0

我不确定为什么会发生这种情况。评估单个单元格并没有解决它,但是evaluteAll()在整个工作簿上运行使它工作!

于 2013-07-31T19:48:17.577 回答