poi3.8 xlsx 单元格显示08:00并且公式栏显示08:00:00,可以使用Date和String,不可以使用公式,但绝对不能出现日期,setcellStyle、sheet.autoSizeColumn(0),setForceFormulaRecalculation(true),evaluateAll();之后需要双击每个单元格才会生效,怎样让其直接生效
时间: 2024-02-29 21:52:06 浏览: 24
如果您想要在设置单元格值后直接更新公式结果,可以调用`FormulaEvaluator`类的`evaluateFormulaCell()`方法,该方法会强制重新计算指定单元格的公式结果。例如:
```
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);
```
您可以在设置单元格值后立即调用这个方法,这样可以确保公式结果与单元格数据同步,并且不需要手动双击每个单元格。
另外,如果您需要确保单元格显示的时间格式为“hh:mm”,可以使用以下代码:
```
CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("hh:mm"));
cell.setCellStyle(style);
```
这样可以确保单元格显示为时间格式,且不会出现日期。
相关问题
poi3.8 xlsx 单元格显示08:00并且公式栏显示08:00:00 可以使用Date和String,但不能出现日期
如果您希望在单元格中显示时间,并且公式栏中也显示相同的时间,您可以使用 `java.util.Date` 类型来设置单元格值,并使用 Excel 内置的时间格式将单元格格式设置为显示时间部分。
以下是一个示例代码:
```java
Date time = new Date(); // 假设您要显示当前时间
CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("hh:mm")); // 设置时间格式
Cell cell = row.createCell(0);
cell.setCellValue(time);
cell.setCellStyle(style);
```
这将在单元格中显示时间(例如“08:00”),并且公式栏中也将显示相同的时间(例如“08:00:00”)。请注意,这种方法将时间作为 Java 中的 `Date` 类型处理,并且将其转换为 Excel 中的日期时间类型。如果您需要对这些时间值执行计算,Excel 将使用日期部分进行计算。如果您只需要在 Excel 中显示时间部分,请使用上一个回答中的第一种方法,将单元格格式设置为仅显示时间部分。
poi3.8 xlsx 单元格显示08:00并且公式栏显示08:00:00,可以使用Date和String,但绝对不能出现日期
如果您希望在单元格中显示时间,并且公式栏中也显示相同的时间,而不显示日期部分,您可以创建一个自定义格式,将其应用于单元格,并将时间作为字符串设置为单元格值。
以下是一个示例代码:
```java
String timeString = "08:00"; // 假设您要显示的时间为 "08:00"
CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("hh:mm;@")); // 设置自定义格式
Cell cell = row.createCell(0);
cell.setCellValue(timeString);
cell.setCellStyle(style);
```
这将在单元格中显示时间(例如“08:00”),并且公式栏中也将显示相同的时间(例如“08:00:00”),但不会显示日期部分。请注意,这种方法将时间作为字符串处理,在公式栏中也将显示为字符串。如果您需要在公式中使用这些时间值进行计算,请确保将其转换为 Excel 中的时间类型。
在自定义格式字符串中,使用分号分隔时间格式和文本格式。在时间格式中,使用 `hh` 表示小时,使用 `mm` 表示分钟。在文本格式中,使用 `@` 表示将单元格值作为文本显示。