问题描述
在使用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/
文章评论