excel - 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"));
解决方案
Excel
的默认日期分隔符由客户端系统设置确定。Excel
数字格式表示:两位数月份mm/dd/yyyy
,后跟默认日期分隔符,后跟两位数日,后跟默认日期分隔符,后跟四位数年份。因此,作为默认日期分隔符的斜线被系统默认日期分隔符替换是正常的。
您可以通过使用日期部分之间的文本/
而不是默认的日期分隔符斜杠来避免这种情况。要将具有特殊含义的字符标记为Excel
数字格式的文本,可以在字符前加上反斜杠\
。
所以
cellStyle.setDataFormat(format.getFormat("mm\\/dd\\/yyyy"));
将始终使用斜线格式化日期作为/
日期部分之间的文本,与客户端的设置无关。
推荐阅读
- db2 - DB2oC(云上的 DB2):面临“尝试修改数据但未定义为修改 SQL 数据”错误
- algorithm - 数学上找到最接近 0 的值
- python - Discord - 我可以通过 python 代码将语音通道中的其他人静音吗?
- c - 如何使用 stm32l1 CRC 单元计算 1 字节的 CRC
- java - 是 ?超级/扩展字节 [] 有意义吗?
- shell - Shell 脚本错误:“文件意外结束”
- javascript - 如何制作 HTML 网格的 a-frame 部分并占用父 div 的宽度?
- java - 如何将 Java POJO / Json 发布到 Play Framework v2.2.1 控制器 Http POST 方法
- reactjs - 状态值未显示
- r - 对前面和后面的条目使用 which() 函数