簡體   English   中英

使用 Nodejs ExcelJS package 解析從 csv 文件讀取的數據

[英]Parse the data read from csv file with Nodejs ExcelJS package

使用 NodeJs,我需要使用從 csv 文件中獲取的數據填充 Excel 文件。 我正在使用 ExcelJS npm package。

我成功地從 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 文件的特定單元格中。

非常感謝。

我准備了例子,你怎么能削減你的文件。 正如在上面的一個答案中提出的那樣,我們使用 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;

你的 output 在這種情況下是這樣的:

Value1
Value2
Value3
Value4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM