poi3.8 xlsx pot3.8 设置setDataFormat后需要双击单元格才会生效,如果使用Date默认会有日期,但是不需要日期,怎么解决
时间: 2024-02-29 17:52:20 浏览: 172
在设置单元格数据格式时,可以使用`DataFormat.setNumFmtIndex()`方法来设置自定义格式,在这个方法中传入一个数字格式的索引,可以自定义格式,比如`0`表示普通文本,`1`表示数字等等。对于日期格式,可以使用`DataFormat.getBuiltinFormat()`方法获取内置的日期格式,例如`yyyy/mm/dd`的格式对应的内置格式为`14`,然后使用`DataFormat.setNumFmtIndex()`方法设置该格式即可。示例代码如下:
```java
DataFormat dataFormat = workbook.createDataFormat();
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(dataFormat.getFormat("yyyy/mm/dd"));
```
如果想要去掉日期部分,可以使用`SimpleDateFormat`类将日期格式化为自己需要的字符串格式。例如:`new SimpleDateFormat("HH:mm:ss")`将日期格式化为时分秒的形式,然后再将格式化后的字符串写入单元格中。
相关问题
poi3.8 xlsx 设置setDataFormat后需要双击单元格才会生效,如果使用Date默认会有日期,但是不需要日期,公式栏显示的是hh:mm:ss单元格显示的是hh:mm,注意:单元格不显示秒格式为hh:mm,公式栏显示秒格式为hh:mm:ss,怎么解决
如果想要在单元格中显示时分,而不显示秒,同时希望公式栏中也只显示时分,可以使用`SimpleDateFormat`类将日期格式化为时分的形式,然后将格式化后的字符串写入单元格中。同时,还需要设置单元格的数据格式为`h:mm`,这样单元格中只会显示时分,而公式栏中也会只显示时分格式。
示例代码如下:
```java
DataFormat dataFormat = workbook.createDataFormat();
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(dataFormat.getFormat("h:mm"));
// 将日期格式化为时分的形式
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date date = new Date();
String timeStr = sdf.format(date);
// 在单元格中写入格式化后的字符串
Cell cell = row.createCell(0);
cell.setCellValue(timeStr);
cell.setCellStyle(cellStyle);
```
这样在单元格中就会以时分的形式显示,公式栏中也会只显示时分格式,不显示秒。需要注意的是,设置单元格数据格式时,字符串中的`h`表示小时,`m`表示分钟,大小写有区分。
poi3.8 xlsx 单元格显示08:00并且公式栏显示08:00:00,可以使用Date和String,但绝对不能出现日期,setcellStyle之后需要双击才会生效,怎样让其直接生效
要让单元格显示为 08:00 并且公式栏显示为 08:00:00,可以使用以下代码:
```java
CellStyle cellStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("hh:mm:ss"));
Cell cell = row.createCell(0);
cell.setCellValue("08:00");
cell.setCellStyle(cellStyle);
```
这里使用了 `setDataFormat` 方法设置单元格格式为时分秒(hh:mm:ss)。同时,使用了 `CreationHelper` 对象创建了一个格式化对象,然后通过该对象获取了一个时分秒格式化字符串。
如果你在设置单元格样式(`CellStyle`)后发现需要双击才能使其生效,那么可以使用下面的代码行来强制 Excel 刷新单元格:
```java
sheet.autoSizeColumn(0);
```
这个方法会自动调整第一列的宽度,同时也会强制刷新单元格格式。这样你就可以在设置单元格样式后直接看到效果了。
阅读全文