Groovy POI创建的单元格被其他程序视为空白,直到在单元格中手动按下ENTER键



好的,这有点难以解释。

我使用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,在公式栏中对有问题的单元格进行简单的"点击返回"(即使它不是公式),并尝试将其重新加载到外部程序中,它会很好地工作。我需要在字符串上计算公式吗?

感谢

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

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

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

在输入值后,查看是否有手动计算具有POI的图纸的选项。

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

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

我不得不为Excel应用程序这样做,因为这些应用程序的计算必须设置为手动,以避免过多的开销。不过只是猜测。。

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

相关内容

最新更新