SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format((Date) rtData.get("reportedAt"));
row.createCell(2).setCellValue(time);
前言最近在做使用poi导出excel导出表格时,日期为纯数字,并不是按照日期格式导出如下图显示:使用poi需要导入的包,pom文件 <!-- poi操作excel --> <dependency> <groupId>org.apache.poi</groupId> <a...
private XSSFWorkbook wb = null;
String dateFormat = "yyyy-MM-dd";//或者"yyyy/MM/dd"格式,"yyyy/M/d"这样的格式不会自动补0
public void setCell(int index,Date value,boolean isStyle){
当将这些数据导出到Excel表格中时,可能会出现日期或时间格式不正确的问题,例如,日期和时间被转换为带小数点的数字。 Excel中的日期格式是特定的数字格式,可以使用Java代码将日期和时间转换为Excel日期格式,然后将其导出到Excel表格中。例如,日期为2021年6月23日,时间为12:00:00的时间戳表示为 44370.5,其中44370表示日期部分,0.5表示时间部分。 在将日期和时间导出到Excel表格之前,可以使用Java中的日期格式化类将其格式化为Excel可以识别的日期格式。
相关jar包,自行去poi官网下载,其中包含了对于date类型的处理,其中该列必须在excel中设置为日期类型。
package com.wonders.task.excel.util;
import com.wonders.task.excel.model.SendBo;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.ap
// 生成一个样式,用于设置内容样式
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setWrapText(true);
2、然后设置单元格内容的时候加上\r\n,强制换行
if(CollectionUtils.isNotEmpty(list)){
StringBuilder buffer = n
在用poi导出Excel的时候, 数据库字段里面存储的是如下图的yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss的格式
但导出到Excel却变成了如下图的数字
通过查看poi的api 的注释发现,setCellValue如果传递的是日期的类型, 那么会把日期变为数字
Date类型:
Calendar类型亦是如此:
因此最容易想到的便是两种方法解决:
1.将单元格格式设置为时间...
用POI读取Excel中日期格式时,会遇到看见Excel中明明是日期时,后台读取反而变成了一串数字。这是当POI把日期数据归类为Cell.CELL_TYPE_NUMERIC 数字类型,其中POI就进行了转换。所以显示了数字。
想要转换成日期格式,就需要调用cell.getDateCellValue(),这样获取到的是Date类型的,再通过操作这个date,就可以获得正确的年月日格式的日期了。
项目需求,excel表格里有多种日期的字段,可能单元为date的,也可能为文本的自己手动填写的,要求后台保存为统一格式,yyyy/MM/dd。
因为数据库的日期字段的类型为字符串,所以保存到数据库的实体类,日期必须为String。
这里设置了一个实体
@Excel(name = "Est. Start Date",dateFormat = "yyyy/MM/dd") // 没有也可以 无需纠结于这里
private Date estStrartDate;
@Excel(name =
POI 单元格时间返回数字
今天学习时跟老师敲代码发现导入单元格日期会变成数字,查阅新版POI文档中提取单元格代码,如下:
// import org.apache.poi.ss.usermodel.*;
DataFormatter formatter = new DataFormatter();
Sheet sheet1 = wb.getSheetAt(0);
for (Row row : sheet1) {
for (Cell cell : row) {
CellReferenc
CellStyle style = workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
cell.setCellStyle(style);
这里创建了一个样式CellStyle,通过setDataFormat方法设置单元格格式为百分数。最后将样式应用到单元格上即可。