【问题标题】:Parse the data read from csv file with Nodejs ExcelJS package使用 Nodejs ExcelJS 包解析从 csv 文件读取的数据
【发布时间】:2022-08-04 15:39:29
【问题描述】:

使用 NodeJs,我需要用从 csv 文件中获取的数据填充 Excel 文件。 我正在使用 ExcelJS npm 包。

我成功地从 csv 文件中读取数据并将其写入 console.log() 但问题是,这是一种非常奇怪的格式。

代码:

var Excel = require(\"exceljs\");

exports.generateExcel = async () => {
  let workbookNew = new Excel.Workbook();

  let data = await workbookNew.csv.readFile(\"./utilities/file.csv\");

  const worksheet = workbookNew.worksheets[0];

  worksheet.eachRow(function (row: any, rowNumber: number) {
    console.log(JSON.stringify(row.values));
  });

};

数据如下所示:

[null,\"Users;1;\"]
[null,\"name1;2;\"]
[null,\"name2;3;\"]
[null,\"name3;4;\"]
[null,\"Classes;5;\"]
[null,\"class1;6;\"]
[null,\"class2;7;\"]
[null,\"class3;8;\"]
[null,\"Teachers;9;\"]
[null,\"teacher1;10;\"]
[null,\"teacher2;11;\"]
[null,\"Grades;12;\"]
[null,\"grade1;13;\"]
[null,\"grade2;14;\"]
[null,\"grade3;15;\"]

所以我需要用这些数据填充的 Excel 文件非常复杂。在特定的单元格中我需要插入用户,在其他表格中我需要一些带有等级的图像等......

我的主要问题是: 如何解析和存储在我的 console.log() 中显示的数据在单独的变量中,例如单独变量中的用户、单独变量中的成绩和单独变量中的教师。

用户示例:

  users = {
    title: \"Users\",
    names: [\"name1\", \"name2\", \"name3\"],
  };

不需要与示例完全相同,但是当我读取具有相同结构的不同 csv 文件时可以重用的东西,因此我可以轻松访问特定数据并将其放入 Excel 文件的特定单元格中。

非常感谢。

标签: javascript node.js


【解决方案1】:

我准备了例子,你怎么能削减你的文件。正如在上面的一个答案中提出的那样,我们使用 fast-csv。解析非常简单,您可以按分隔符拆分,然后将 line[0] 作为第一个元素。

const fs = require('fs');
const csv = require('@fast-csv/parse');

fs.createReadStream('Test_12345.csv')
    .pipe(csv.parse())
    .on('error', error => console.error(error))
    .on('data', function (row) {
        var line = String(row)
        line = line.split(';')
        console.log(`${line[0]}`)
        
        })
    .on('end', rowCount => console.log(`Parsed ${rowCount} rows`));

如果我们这样输入:

Value1;1101;
Value2;2202;
Value3;3303;
Value4;4404;

在这种情况下,您的输出如下所示:

Value1
Value2
Value3
Value4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多