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

如何配置XLSX npm包读取Excel/CSV时保留原始日期格式?

问题

我一直在使用XLSX包读取Excel和CSV文件,但在配置日期相关参数时遇到了问题。

最初的代码如下:

const wb = XLSX.readFile(strFilePath, {
    type: 'file', 
    cellDates: true, dateNF: 'mm/dd/yyyy'            
});

const json = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {
    defval: "",
    raw: false,
    forceQuotes: true,
    blankrows: true,
});

使用上述代码时,输入类似12/8/2022的日期,会被格式化为12/08/2022,不符合预期。

于是我将readFile的配置修改为:

const wb = XLSX.readFile(strFilePath, {
    type: 'file', 
    raw:true            
});

但修改后,读取9/9/2022时会变成9/9/22。

请问需要添加什么配置才能读取Excel/CSV中的原始日期,避免被格式化?

解决方案

要保留原始日期格式,需针对Excel和CSV的不同特性调整配置,核心是阻止工具自动解析或格式化日期值:

处理Excel文件

Excel中的日期本质是序列化数字,要保留单元格显示的原始文本,需关闭日期解析并读取格式化文本:

const wb = XLSX.readFile(strFilePath, {
    cellDates: false, // 禁用日期解析,不将数字转为Date对象
    cellText: true    // 读取单元格的原始格式化文本
});

const json = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {
    defval: "",
    forceQuotes: true,
    blankrows: true,
    raw: false
});

处理CSV文件

CSV是纯文本格式,需禁用所有自动类型检测,强制按原始文本读取:

const wb = XLSX.readFile(strFilePath, {
    type: 'file',
    cellDates: false, // 关闭日期解析
    cellText: true,   // 强制读取原始文本
    dateNF: false     // 禁用日期格式化规则
});

const json = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {
    defval: "",
    raw: true,        // 直接取原始文本值
    forceQuotes: true,
    blankrows: true
});

关键注意事项

  • 可通过文件扩展名判断是Excel还是CSV,再切换对应配置
  • cellText: true是核心配置,确保读取的是单元格显示的原始文本,而非解析后的值
  • 避免同时开启raw: true和cellDates: true,两者会冲突导致异常解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:01:11