xlsx 将日期格式转换为随机数

问题描述 投票:0回答:2

我正在向此函数传递一个文件,我想将数据转换为 json,但对于特定列 DOB 05-04-2001 转换为随机数,例如 36986。我想要输入作为此函数响应的确切日期,如何去做这个 ?谁能帮帮我吗?

static convertExcelFileToJsonUsingXlsxTrimSpaces = (path: string) => {
    // Read the file using pathname
    const file = xlsx.readFile(path);

    // Grab the sheet info from the file
    const sheetNames = file.SheetNames;
    const totalSheets = sheetNames.length;

    // Variable to store our data
    const parsedData: any[] = [];

    // Loop through sheets
    for (let i = 0; i < totalSheets; i += 1) {
      // Convert to json using xlsx

      const sheetData = xlsx.utils.sheet_to_json(file.Sheets[sheetNames[i]], { raw: true });

      console.log(sheetData);

      // Process each row to handle tab-separated values
      const processedData: any[] = [];
      sheetData.forEach((row: any) => {
        const processedRow: any = {};
        Object.keys(row).forEach((key) => {
          processedRow[key] = row[key].toString().trim(); // Convert to string and trim whitespace
        });
        processedData.push(processedRow);
      });

      // Add the sheet's processed data to our data array
      parsedData.push(...processedData);
    }

    return parsedData;
  };
node.js typescript xlsx
2个回答
1
投票

这不是随机数,而是日期单元格的默认解析。

要获取日期值,请在解析选项中添加

cellDates: true
标志:

试试这个:

const sheetData = xlsx.utils.sheet_to_json(file.Sheets[sheetNames[i]], { raw: true, cellDates: true });

请参阅文档:

默认情况下,Excel 将日期存储为数字,其格式代码为 指定日期处理。例如,存储日期 2017 年 2 月 19 日 如数字 42785,数字格式为 d-mmm-yy

所有解析器的默认行为是生成数字单元格。 将 cellDates 设置为 true 将强制生成器存储日期。

https://www.npmjs.com/package/xlsx#dates


0
投票

将 cellDates 添加到 utils.sheet_to_json 函数并没有真正起作用。

对我有用的是我在这里找到的评论在此处输入链接描述

XLS 文件始终将日期存储为数字代码。要获取日期对象,请将第一行更改为

var workbook = XLSX.readFile(filePath, {cellDates:true});

这在在此处输入链接描述

中进行了解释
© www.soinside.com 2019 - 2024. All rights reserved.