poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,setDataFormat不会立刻生效,setForceFormulaRecalculation也不会立刻生效,evaluateFormulaCell还是需要手动点击才会生效
时间: 2024-02-29 20:56:58 浏览: 37
你可以尝试使用以下代码来实现单元格点击后在公式栏显示时间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不会立刻生效
在使用 `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 重新计算公式,这样就能够立刻看到新的格式。
希望这个回答能够帮到您,如有其他问题,请随时提出。
poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,使用setDataFormat不会立即生效
在使用 `setDataFormat` 方法设置单元格格式后,有时候会出现设置不会立即生效的情况,这是因为在设置单元格格式后,需要使用 `forceFormulaRecalculation` 方法强制重新计算公式,才能够在公式栏中立即显示新的格式。
因此,您可以在设置单元格格式后,调用 `forceFormulaRecalculation` 方法,如下所示:
```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` 方法来强制重新计算公式,这样就能够在公式栏中立即显示新的格式。
希望这个回答能够帮到您,如有其他问题,请随时提出。