如何使用Excel4Node在Excel工作表中写入数组

时间:2018-07-30 05:48:41

标签: node.js excel excel4node

我正在使用Excel4node包创建一个excel文件。   通过使用此代码

// Require library
var excel = require('excel4node');

// Create a new instance of a Workbook class
var workbook = new excel.Workbook();

// Add Worksheets to the workbook
var worksheet = workbook.addWorksheet('Sheet 1');
var worksheet2 = workbook.addWorksheet('Sheet 2');

// Create a reusable style
var style = workbook.createStyle({
  font: {
    color: '#FF0800',
    size: 12
  },
  numberFormat: '$#,##0.00; ($#,##0.00); -'
});

// Set value of cell A1 to 100 as a number type styled with paramaters of style
worksheet.cell(1,1).number(100).style(style);

// Set value of cell B1 to 300 as a number type styled with paramaters of style
worksheet.cell(1,2).number(200).style(style);

// Set value of cell C1 to a formula styled with paramaters of style
worksheet.cell(1,3).formula('A1 + B1').style(style);

// Set value of cell A2 to 'string' styled with paramaters of style
worksheet.cell(2,1).string('string').style(style);

// Set value of cell A3 to true as a boolean type styled with paramaters of style but with an adjustment to the font size.
worksheet.cell(3,1).bool(true).style(style).style({font: {size: 14}});

workbook.write('Excel.xlsx');

通过使用此代码现在创建一个Excel工作表,我想要的是。 我想在Excel工作表中写入数组。

worksheet.getCell('A1').value = 's.no';

通过使用代码。它正在将数据写入工作表,但它正在逐个单元地写入数据。 在Excel工作表中写入数组需要花费大量时间

    data=[{s.no:1,Name:'xxx',Age:'22'},
{s.no:2,Name:'yyy',Age:'12'},
    {s.no:3,Name:'zzz',Age:'32'}]

我要在Excel工作表中写入数组。

 workbook.write('Excel.xlsx',data);

我这样给出,但这也不起作用。 谁能解决这个问题。

2 个答案:

答案 0 :(得分:0)

为什么不使用

sheet.cell(row , col ).string(`your value`).style(`your style`);

答案 1 :(得分:0)

我要做的是创建一个excel4node层。可以起到以下作用:

// the type arg is the cell write method you want to use such as string, number, or formula
const writeCell(wb, ws, row, col, value, type, style){
  ws.cell(row, col)[type](value).style(wb.createStyle(style))
}

const xl = require('excel4node')
const wb = xl.createWorkbook()

// TODO: track your row and column indices with arrays. let's assume that we are 
// in the outer array and the inner array or row array is called "data"
// this would write out a row of data
data.forEach((d, idx) => {
  writeCell(wb, ws, rowIdx, idx + 1, d.value, d.type, d.style)
}