首页 > 解决方案 > POI 创建 excel 文件,日期分隔符根据客户日期格式更改

问题描述

在使用包创建工作簿poi-ooxml以将日期单元格样式/格式设置为后,当我打开它时mm/dd/yyyy它显示为格式。mm-dd-yyyy但是,当我将系统的短日期格式更改为 'yyyy/mm/dd' 时,单元格会正确显示为所需的格式 - mm/dd/yyyy。所以我想知道如何将单元格格式设置为mm/dd/yyyy用作/分隔符,而不被客户端机器区分?

在此处输入图像描述

设置单元格样式的代码

val dateCell = row.createCell(2);
// dateOccurred is LocalDate type
val date = DateUtil.getExcelDate(record.getDateOccurred()); 
dateCell.setCellValue(date);
val cellStyle = wb.createCellStyle();
val format = wb.createDataFormat();
cellStyle.setDataFormat(format.getFormat("mm/dd/yyyy"));

标签: excelapache-poi

解决方案


Excel的默认日期分隔符由客户端系统设置确定。Excel数字格式表示:两位数月份mm/dd/yyyy,后跟默认日期分隔符,后跟两位数日,后跟默认日期分隔符,后跟四位数年份。因此,作为默认日期分隔符的斜线被系统默认日期分隔符替换是正常的。

您可以通过使用日期部分之间的文本/而不是默认的日期分隔符斜杠来避免这种情况。要将具有特殊含义的字符标记为Excel数字格式的文本,可以在字符前加上反斜杠\

所以

cellStyle.setDataFormat(format.getFormat("mm\\/dd\\/yyyy"));

将始终使用斜线格式化日期作为/日期部分之间的文本,与客户端的设置无关。


推荐阅读