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

AngularJS读取Excel时如何将日期类文本保留为原字符串?

解决Excel读取时含日期文本被自动转为日期格式的问题

核心问题原因

SheetJS(XLSX库)默认会自动识别单元格内容类型,当文本中包含类似February 16的日期格式片段时,会被误判为日期类型转换,导致原始文本丢失。

两种有效解决方法

方法一:全局强制读取原始字符串

在读取Excel文件时添加raw: true配置项,直接跳过所有自动类型识别,将所有单元格内容以原始字符串形式读取。

function ProcessExcel(data) {
  // 关键配置:raw: true 强制保留原始文本
  const workbook = XLSX.read(data, { raw: true });
  const firstSheetName = workbook.SheetNames[0];
  const worksheet = workbook.Sheets[firstSheetName];
  const jsonData = XLSX.utils.sheet_to_row_object_array(worksheet);
  
  // 后续处理展示逻辑
}

方法二:针对日期类型单元格反向转换

如果需要保留其他单元格的类型识别,仅修正被误转的日期单元格,可以遍历工作表,将日期类型的单元格转回字符串格式。

function ProcessExcel(data) {
  const workbook = XLSX.read(data);
  const firstSheetName = workbook.SheetNames[0];
  const worksheet = workbook.Sheets[firstSheetName];

  // 遍历所有单元格,修正日期类型内容
  for (const cellAddr in worksheet) {
    // 跳过工作表元数据(以!开头的键)
    if (cellAddr.startsWith('!')) continue;
    
    const cell = worksheet[cellAddr];
    // 单元格类型为'd'表示已被识别为日期
    if (cell.t === 'd') {
      // 将日期对象转为匹配原始文本的格式(示例为"February 16")
      cell.v = XLSX.SSF.format('mmmm dd', cell.v);
      // 将单元格类型改为字符串
      cell.t = 's';
    }
  }

  const jsonData = XLSX.utils.sheet_to_row_object_array(worksheet);
  // 后续处理展示逻辑
}

方法对比

  • 方法一操作简单,从根源避免类型误判,适合所有需要保留原始文本的场景;
  • 方法二灵活性更高,但需要针对原始文本格式调整转换逻辑,仅适合部分单元格需要修正的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:35:27