JS使用XLSX读取Excel时日期格式与原表不一致如何解决
你遇到的日期格式异常是因为XLSX库默认不会自动识别转换日期类型单元格,只需添加对应配置项即可解决,具体操作如下:
1. 修改XLSX.read读取配置
添加cellDates核心配置项,开启日期自动识别:
var workbook = XLSX.read(data, { type: "binary", cellDates: true, // 自动将日期类单元格转为JS Date对象 dateNF: "yyyy-mm-dd" // 可选:预设全局日期输出格式 });
cellDates设为true后,读取到的日期单元格会默认转为JS原生Date对象,可直接调用日期方法做后续处理。
2. 配合sheet_to_json的可选配置
如果需要直接输出格式化后的日期字符串,而非Date对象,调用转换方法时添加raw: false配置:
const jsonResult = XLSX.utils.sheet_to_json(worksheet, { raw: false, // 关闭原始值输出,应用预设的格式规则 dateNF: "yyyy-mm-dd HH:MM:SS" // 可单独指定当前转换的日期格式,优先级高于全局配置 })
常见注意事项
- 仅Excel中被标记为「日期」「时间」格式的单元格会被上述规则处理,文本格式的伪日期需要额外做格式校验与转换
- 开启
cellDates后遇到无效日期值会返回Invalid Date对象,建议转换后统一做合法性校验 - 若不想自动转为Date对象,可不开
cellDates,拿到原始的Excel日期序列值后,调用XLSX.SSF.format('自定义格式', 序列值)手动完成转换
内容的提问来源于stack exchange,提问作者solsf zuhr
相关产品推荐
相关产品推荐

