You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XSL Writer API写入Excel无法得到正确dd.MM.yyyy日期格式

用户提问

我尝试向Excel单元格写入dd.MM.yyyy格式的日期,实现代码如下:

val dateFormat = new SimpleDateFormat("dd.MM.yyyy")

随后我将下述值传入XSL Writer API:

dateFormat.parse("24.06.2020")

但最终输出的XSL文件中日期显示为"24/06/2020",与预期格式不符,请问我哪里操作有误?

问题原因
  • dateFormat.parse() 方法输出的是原生Date类型对象,该对象仅存储时间戳信息,本身不携带任何展示格式属性
  • 你定义的SimpleDateFormat规则仅作用于「字符串转Date对象」的解析步骤,不会对后续XSL Writer API的日期渲染逻辑产生影响,API默认使用内置的dd/MM/yyyy格式输出日期,就会出现和预期不符的情况
解决方案

方案1:写入纯文本格式日期

直接传入格式化完成的字符串,不需要转成Date对象传入API:

val dateFormat = new SimpleDateFormat("dd.MM.yyyy")
// 如果原始数据是Date类型,用format方法转成目标格式字符串传入API即可
val targetDateStr = dateFormat.format(yourDate)
// 如果本身就是符合格式的字符串,可以直接传入API

注意:该方案写入的内容会被Excel识别为纯文本,无法直接参与日期类函数计算

方案2:写入可识别日期类型并自定义显示格式

保留传入Date对象的逻辑,额外给目标单元格设置自定义日期显示格式:

  1. 基于你使用的XSL Writer库创建自定义单元格样式,指定日期展示格式为dd.MM.yyyy
  2. 写入日期时将该样式绑定到对应单元格上,API渲染时就会按照指定格式展示

以常用的Apache POI库为例,核心实现逻辑如下:

// 创建自定义日期样式
val cellStyle = workbook.createCellStyle()
val formatHelper = workbook.creationHelper
cellStyle.dataFormat = formatHelper.createDataFormat().getFormat("dd.MM.yyyy")

// 写入日期时绑定样式
cell.setCellValue(dateFormat.parse("24.06.2020"))
cell.cellStyle = cellStyle

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:45:04