📌  相关文章
📜  如何在 Node.js 中将 CSV 转换为 Excel?(1)

📅  最后修改于: 2023-12-03 14:52:27.615000             🧑  作者: Mango

如何在 Node.js 中将 CSV 转换为 Excel?

在 Node.js 中,将 CSV 文件转换为 Excel 文件可以有两种方式:手动处理 CSV 文件并使用相关库生成 Excel 文件或者使用特定的库来实现 CSV 文件到 Excel 文件的转换。下面,将介绍两种常用方法。

手动处理 CSV 文件并使用相关库生成 Excel 文件
步骤 1:安装相关库

为了完成这个过程,需要先安装下列 2 个库:

  • csv-parser: 用于处理 CSV 文件,将其转换为 JSON 格式数据。
  • exceljs: 在 Node.js 中创建 Excel 文件的库。

可使用以下代码安装:

npm install csv-parser exceljs
步骤 2:将 CSV 文件转换为 JSON 格式

使用 csv-parser 库,可以轻松地将 CSV 文件转换为 JSON 格式数据。可使用以下代码将 CSV 文件转换为 JSON 格式:

const csv = require('csv-parser');
const fs = require('fs');
const results = [];

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', (data) => results.push(data))
  .on('end', () => {
    console.log(results);
  });
步骤 3:将 JSON 格式数据转换为 Excel 文件

使用 exceljs 库,可以在 Node.js 中创建 Excel 文件。可使用以下代码将 JSON 格式数据转换为 Excel 文件:

const Excel = require('exceljs');

const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet('My Sheet');

worksheet.columns = [
  { header: 'ID', key: 'id', width: 10 },
  { header: 'Name', key: 'name', width: 32 },
  { header: 'D.O.B.', key: 'dob', width: 15, }
];

results.forEach((result) => {
  worksheet.addRow(result);
});

workbook.xlsx.writeFile('data.xlsx')
  .then(() => {
    console.log('Excel file is written to disk!');
  });
完整示例
const csv = require('csv-parser');
const fs = require('fs');
const Excel = require('exceljs');

const results = [];

fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', (data) => results.push(data))
  .on('end', () => {
    const workbook = new Excel.Workbook();
    const worksheet = workbook.addWorksheet('My Sheet');

    worksheet.columns = [
      { header: 'ID', key: 'id', width: 10 },
      { header: 'Name', key: 'name', width: 32 },
      { header: 'D.O.B.', key: 'dob', width: 15, }
    ];

    results.forEach((result) => {
      worksheet.addRow(result);
    });

    workbook.xlsx.writeFile('data.xlsx')
      .then(() => {
        console.log('Excel file is written to disk!');
      });
  });
使用特定的库进行转换

除了手动处理 CSV 文件并使用相关库生成 Excel 文件,还可以使用特定的库来实现 CSV 文件到 Excel 文件的转换。以下是其中两个常用的库。

csvtojson

csvtojson 库是一个广受欢迎的库,它可以将 CSV 文件转换为 JSON 格式数据。同时,该库有助于将 JSON 格式数据导出到 Excel 文件。可使用以下命令进行安装:

npm install csvtojson

以下是代码示例:

const csv = require('csvtojson');
const ExcelJS = require('exceljs');

const csvFilePath = 'data.csv';
const json = [];

// 将 CSV 文件转换为 JSON 格式数据
csv().
  fromFile(csvFilePath).
  subscribe((jsonObj) => {
    json.push(jsonObj);
  }, (err) => {
    console.log(err);
  }, () => {
    // 将 JSON 格式数据导入到 Excel 文件
    const workbook = new ExcelJS.Workbook();

    const worksheet = workbook.addWorksheet('Sheet 1');

    worksheet.columns = [
      { header: 'ID', key: 'id', width: 10 },
      { header: 'Name', key: 'name', width: 32 },
      { header: 'D.O.B.', key: 'dob', width: 15 }
    ];

    json.forEach((record) => {
      worksheet.addRow(record);
    });

    workbook.xlsx.writeFile('data.xlsx')
      .then(() => {
        console.log('Excel file is written to disk!');
      });
  });
csv-xlsx

csv-xlsx 库是一个轻松的方式,支持将 CSV 文件转换为 XLSX 文件。可以使用以下命令进行安装:

npm install csv-xlsx

以下是代码示例:

const csv = require('csv');
const csvxlsx = require('csv-xlsx');

const csvFilePath = 'data.csv';
const xlsxFilePath = 'data.xlsx';

// 将 CSV 文件转换为 XLSX 文件
csv().fromFile(csvFilePath).then(function (jsonArrayObj) {
  const xlsxData = csvxlsx.csv2xlsx(
    [{ data: jsonArrayObj, name: 'Sheet1' }],
    { sheet: { name: 'Sheet1' } }
  );
  require('fs').writeFileSync(xlsxFilePath, xlsxData, 'binary');
  console.log('XLSX file is written to disk!');
});

结论

通过这篇文章,介绍了在 Node.js 中将 CSV 转换为 Excel 的两种方法。可以选择手动处理 CSV 文件并使用相关库生成 Excel 文件,也可以使用特定的库进行转换。手动处理 CSV 文件是更常用的方法之一,但如果需要处理大量的数据或快速处理一些数据,使用 csv-xlsx 库会更方便易用。