解决ApachePOI写入Excel单元格为日期后,生成后变成小数点的问题

2022-10-20 808点热度 0人点赞 0条评论

问题描述

在使用ApachePOI做Excel导出的时候,如果遇到日期类型的单元格内容,我们不希望简单把单元格内容赋值成String文本,而是希望给单元格复制成Excel能认得的Date日期类型,以便在Excel中做一些计算或者统计。

如图代码很简单:

Cell cell = row.createCell(i);
Date date = new Date(); // 实际的日期从业务中来
cell.setCellValue(date);

不过生成了Excel后,就变成这样了(可以看到新建日期和更新日期里的内容都变成小数了):

问题解决

上面的问题是给单元格设置日期,还需要给单元格指定日期的格式:

Cell cell = row.createCell(i);
Date date = new Date(); // 实际的日期从业务中来
cell.setCellValue(date); // 给单元格赋值日期

CellStyle cellStyle = workbook.createCellStyle();
DataFormat format= workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("yyyy-MM-dd HH:mm:ss"));
cell.setCellStyle(cellStyle); // 给单元格设置带有日期格式的cellStyle

使用POI读取单元格是日期格式时,默认的处理方式,也会遇到类似的问题,处理方法,参考:https://blog.terrynow.com/2022/10/25/java-poi-read-excel-date-cell-numerical-digit-sovled-and-read-cell-content-tools/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论