使用FastExcel设置Date值时,如何将单元格类型设为Date?
在FastExcel中设置Date类型单元格的正确格式
问题描述
在Java中使用FastExcel创建电子表格时,调用org.dhatim.fastexcel.Worksheet的重载方法worksheet.value(row, column, value)设置单元格值。当值为Date类型时,调用的方法为:
public void value(int r, int c, Date value)
但表格中该值显示为数值,单元格类型为Standard,手动将单元格类型改为Date后才显示正确的日期。需要配置FastExcel直接将单元格类型设置为Date。
解决方法
FastExcel直接传入Date对象只会写入日期对应的Excel底层数值(即从1900年1月1日起算的天数),必须搭配日期格式样式,才能让Excel识别并显示为日期类型:
- 先创建日期格式的样式
// 初始化工作簿 Workbook workbook = new Workbook(outputStream); // 创建自定义日期格式的样式,格式可根据需求修改(比如"yyyy/MM/dd HH:mm:ss") Style dateStyle = workbook.createStyle().format("yyyy-MM-dd");
- 写入Date值时指定该样式
Worksheet worksheet = workbook.newWorksheet("Sheet1"); Date targetDate = new Date(); // 第四个参数传入已定义的日期样式 worksheet.value(0, 0, targetDate, dateStyle);
通过这种方式写入的单元格会被Excel自动识别为日期类型,直接显示格式化后的日期,无需手动调整单元格类型。如果有多个日期单元格需要设置,可复用同一个Style对象,提升效率。
内容的提问来源于stack exchange,提问作者Mark Smith
相关产品推荐
相关产品推荐

