You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Excel中日期时间列完整显示?SheetJS API使用问题

解决SheetJS json_to_sheet日期格式化异常问题

我之前也碰到过一模一样的问题,核心原因要么是你的createtime字段不是标准的JavaScript Date对象,要么是缺少了关键的配置项,导致SheetJS没法正确解析和格式化日期。下面是具体的解决步骤:

1. 先确保日期字段是合法的Date对象

SheetJS的dateNF选项只对JavaScript Date类型的数据生效,如果你的createtime是字符串(比如"20240520143000")或时间戳,得先把它转换成Date对象:

// 处理原始数据,将createtime转为Date类型
const processedData = dataForSheet.map(item => {
  return {
    ...item,
    // 根据你的原始日期格式调整转换逻辑
    createtime: new Date(item.createtime)
  };
});

注意:如果是"2024-05-20 14:30:00"这类标准格式的字符串,直接用new Date()就能解析;如果是毫秒级时间戳,直接传入new Date(timestamp)即可。

2. 配置正确的SheetJS参数

生成sheet时,除了dateNF,一定要加上cellDates: true选项——这个配置会强制SheetJS生成Excel原生的日期类型单元格,而不是默认的数字序列号,配合dateNF就能完美显示你要的日期时间格式:

const ws2 = XLSX.utils.json_to_sheet(processedData, {
  skipHeader: true,
  dateNF: 'YYYYMMDD HH:mm:ss', // 你需要的日期时间格式
  cellDates: true // 关键配置,避免日期被错误解析为数字
});

额外排查点

  • 如果还是出现异常,先检查processedData里的createtime是不是有效Date对象(可以用console.log(item.createtime instanceof Date)验证,排除Invalid Date的情况)
  • dateNF的格式要符合SheetJS规范:YYYY是4位年份,MM是2位月份,DD是2位日期,HH是24小时制小时,mm是分钟,ss是秒,注意大小写别写错

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

火山引擎 最新活动