如何在nodejs中追加到excel文件

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

我目前正在开发一种表单,它将接受用户输入并将其添加到 Excel 工作表的一行中,到目前为止,我已经设法使用第 3 方插件(具体来说是 Node-xls)制作 Excel 工作表。 如果我想向 Excel 添加另一行,则会出现问题,它会删除旧条目并添加新条目,而不是将数据附加到下一行。

尝试读取 Excel,然后连接缓冲区并再次写入文件,但结果发现它损坏了文件并使其无法使用。

如何将数据附加到 Excel 工作表的末尾?我是 Nodejs 和缓冲区的新手

var fs = require('fs');
var NodeXls = require('node-xls');
var tool = new NodeXls();
var xls = tool.json2xls({firstName: "arjun", lastName: "u", dob:"12/3/2008"}, {order:["firstName", "lastName", "dob"]});
fs.appendFile('output.xlsx', xls, 'binary', function(err){
if(err)
  alert("File is readOnly or is being used by another application,  please close it and continue!");
});
node.js excel append buffer
4个回答
6
投票

你尝试过Exceljs吗?它有助于读取、操作电子表格数据和样式并将其写入 XLSX 和 JSON。

查看以下链接了解详情

https://www.npmjs.com/package/exceljs

您添加行或追加行的问题已在这里解决:

worksheet.addRow({id: 1, name: 'John Doe', dob: new Date(1970,1,1)});

var rowValues = [];
rowValues[1] = 4;
rowValues[5] = 'Kyle';
rowValues[9] = new Date();
worksheet.addRow(rowValues);

// Add an array of rows 
var rows = [
    [5,'Bob',new Date()], // row by array 
    {id:6, name: 'Barbara', dob: new Date()}
];
worksheet.addRows(rows);

0
投票

安装npm模块'spread_sheet',它肯定会解决添加行以及从任何工作表中读取电子表格行的问题。


0
投票

它将一次添加一行

var spread_sheet = require('spread_sheet');
var row = "1,2,Jack,Pirate";
var filePath = '/home/Pranjal/Desktop/test.xlsx';
var sheetName = "Sheet1";

spread_sheet.addRow(row,filePath,sheetName,function(err,result){
    console.log(err,result)
})

0
投票

使用以下代码进行相同的操作 -

const fs = require('fs');
const xlsx = require('xlsx');

function appendFromExcelToExcel(filePath, data) {
  try {
    const workbook = xlsx.readFile(filePath);

    const sheetName = 'Sheet1';
    const worksheet = workbook.Sheets[sheetName] || xlsx.utils.aoa_to_sheet([]);

    const lastRow = worksheet['!ref'].match(/R(\d+)/)[1]; 

    const newRow = xlsx.utils.aoa_to_sheet([data]);

    xlsx.utils.sheet_add_json(worksheet, newRow, { origin: `A${lastRow}` });
    xlsx.writeFile(workbook, filePath);

    console.log('appended success!');
  } catch (error) {
    console.error('Error appending :', error);
  }
}


const filePath = 'myData.xlsx'; 
const newData = ['New Data 1', 'New Data 2']; 

appendFromExcelToExcel(filePath, newData);
© www.soinside.com 2019 - 2024. All rights reserved.