excel - POI 创建 excel 文件,日期分隔符根据客户日期格式更改

标签 excel apache-poi

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

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"));

最佳答案

Excel的默认日期分隔符由客户端系统设置确定。和 Excel数字格式mm/dd/yyyy表示:两位数月份,后跟默认日期分隔符,后跟两位数日,后跟默认日期分隔符,后跟四位数年份。因此,作为默认日期分隔符的斜线被系统默认日期分隔符替换是正常的。
您可以通过使用文本 / 来避免这种情况。在日期部分之间,而不是默认的日期分隔符斜线。将具有特殊含义的字符标记为 Excel 中的文本数字格式,字符可以以反斜杠为前缀 \ .
所以

cellStyle.setDataFormat(format.getFormat("mm\\/dd\\/yyyy"));
将始终使用斜杠将日期格式化为文本 /在独立于客户端设置的日期部分之间。

关于excel - POI 创建 excel 文件,日期分隔符根据客户日期格式更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64073483/

相关文章:

Excel VBA - 将单元格中的日期与当前日期进行比较

java - 如何获取数字值作为字符串值?

java - 有没有办法使用 Apache POI 修改 Microsoft Word 页脚?

java - 如何在 Apache POI Word 中添加与文本内联的多个方程?

java - 如何使用poi jar在java api中读取docx文件内容

java - Apache poi 表 (XWPFTable) 未正确生成

excel - VBA AES CBC 加密

php - 如何使用 php/mysql 强制将整数到字符串导出到 Excel?

mysql - 从excel vba连接到mysql时sql中的类型不匹配错误

Excel:模拟具有给定均值、标准差、偏度和峰度的整数随机样本