poi3.8 单元格显示时间hh:mm,需要点击单元格时在公式栏显示时间hh:mm:ss,setDataFormat,cell.setAsActiveCell()不会立刻生效,setForceFormulaRecalculation也不会立刻生效,evaluateFormulaCell还是需要双击才会生效
时间: 2024-02-29 12:56:49 浏览: 17
如果您希望单击单元格时在公式栏中显示完整时间,您可以使用以下代码:
```
DataFormat format = workbook.createDataFormat();
CellStyle timeStyle = workbook.createCellStyle();
timeStyle.setDataFormat(format.getFormat("hh:mm:ss"));
cell.setCellStyle(timeStyle);
cell.setCellType(CellType.FORMULA);
sheet.setActiveCell(cell);
sheet.setActiveCell(cell.getAddress());
```
在这个代码中,我们将单元格格式设置为时间格式,但是我们将单元格类型设置为公式类型。这样,当单元格被单击时,公式栏将显示单元格中的完整时间。我们还使用 `setActiveCell` 方法将单元格设置为活动单元格,从而确保公式栏中显示正确的值。
请注意,如果单元格包含的是静态值而不是公式,那么单元格类型应该是 `CellType.NUMERIC` 或 `CellType.STRING`,而不是 `CellType.FORMULA`。
相关问题
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` 方法来强制重新计算公式,这样就能够在公式栏中立即显示新的格式。
希望这个回答能够帮到您,如有其他问题,请随时提出。