poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,setDataFormat不会立刻生效,setForceFormulaRecalculation也不会立刻生效,evaluateFormulaCell还是需要手动点击才会生效
时间: 2024-02-29 09:56:58 浏览: 76
你可以尝试使用以下代码来实现单元格点击后在公式栏显示时间hh:mm:ss的功能:
```java
// 设置单元格格式为时间hh:mm
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.createDataFormat().getFormat("hh:mm"));
cell.setCellStyle(cellStyle);
// 设置单元格点击后在公式栏显示时间hh:mm:ss
cell.setCellFormula("TEXT(A1,\"hh:mm:ss\")");
// 强制重新计算公式
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);
```
其中,第一行代码设置了单元格的格式为时间hh:mm,第二行代码设置了单元格点击后在公式栏显示时间hh:mm:ss,第三行代码强制重新计算公式并更新单元格的值。请注意,以上代码是基于POI 3.17版本编写的,如果你的版本不同,可能需要做出一些调整。
相关问题
poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,setDataFormat不会立刻生效,setForceFormulaRecalculation也不会立刻生效
如果在使用 `setDataFormat` 方法设置单元格格式后,同时使用 `setForceFormulaRecalculation` 方法强制 Excel 重新计算公式,但仍然无法立刻看到新的格式,可能是因为 Excel 的自动计算选项被关闭了。
可以使用以下代码来开启 Excel 的自动计算选项:
```java
workbook.setForceFormulaRecalculation(true);
HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);
```
在这里,我们使用 `setForceFormulaRecalculation` 方法开启 Excel 的自动计算选项,然后使用 `HSSFFormulaEvaluator.evaluateAllFormulaCells` 方法重新计算所有公式单元格的值,这样就能够立刻看到新的格式了。
需要注意的是,`evaluateAllFormulaCells` 方法的计算量比较大,如果工作簿中包含大量的公式单元格,可能会比较耗时。如果只需要重新计算某个单元格的公式,可以使用 `evaluateFormulaCell` 方法来计算指定单元格的公式,代码如下:
```java
HSSFFormulaEvaluator.evaluateFormulaCell(cell);
```
在这里,我们使用 `evaluateFormulaCell` 方法计算指定单元格的公式。
希望这个回答能够帮到您,如有其他问题,请随时提出。
poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,setDataFormat不会立刻生效
在使用 `setDataFormat` 方法设置单元格格式后,有时候确实会出现该方法不会立刻生效的情况。这是因为在设置单元格格式后,需要强制 Excel 重新计算公式,才能立刻看到新的格式。
可以使用 `setForceFormulaRecalculation` 方法强制 Excel 重新计算公式,代码如下:
```java
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.createDataFormat().getFormat("hh:mm:ss"));
Cell cell = row.createCell(0);
cell.setCellValue(new Date()); // 假设这里是要设置的时间值
cell.setCellStyle(cellStyle);
sheet.setForceFormulaRecalculation(true); // 强制重新计算公式
```
在这里,我们在设置单元格格式后,使用 `setForceFormulaRecalculation` 方法强制 Excel 重新计算公式,这样就能够立刻看到新的格式。
希望这个回答能够帮到您,如有其他问题,请随时提出。
阅读全文