好的,这很难解释。
我使用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并在相关单元格上执行简单的“命中返回”,在公式栏中(即使它不是公式)并尝试将其重新加载到外部程序中,它工作正常。我是否需要评估字符串上的公式?
由于
答案 0 :(得分:1)
我没有使用Java的经验,但必须在单元格中输入Enter通常表示计算设置为手动。由于您正在使用API,因此可能会将Java中的输入视为公式(?)。
打开处于损坏状态的违规工作簿,并在工作表上选择[公式]选项卡顶部,然后选择[计算]>计算工作表。
如果这更新了值,那么我会看到两个选项...
在输入值后,查看是否有选项可以使用POI手动计算工作表。
或者,您只需编写一个 tiny 位的VBA,就可以在打开工作簿时强制计算该工作表。 MSDN提供了一个简单的例子。
http://msdn.microsoft.com/en-us/library/office/aa223802%28v=office.11%29.aspx
我必须为Excel应用程序执行此操作,其中必须将计算设置为手动以避免过多的开销。只是一个猜测..
答案 1 :(得分:0)
我不确定为什么会发生这种情况..并且评估单个单元格并没有解决它,但是在整个工作簿上运行evaluteAll()
使它工作了!