0

是否有可能/是否有方便的功能可以使用 ExcelJS 将一系列单元格和/或整个工作表从一个 Excel 工作表复制到另一个工作表?

4

3 回答 3

2
var sourceWorkbook= new Excel.Workbook();
var sourceWorksheet;
sourceWorkbook.xlsx.readFile("template.xlsx").then(function(){
    sourceWorksheet= sourceWorkbook.getWorksheet(1);
    var targetWorkbook = new Excel.Workbook;
    var targetSheet = targetWorkbook.addWorksheet();
    sourceWorksheet.eachRow((row, rowNumber) => {
        var newRow = targetSheet.getRow(rowNumber);
        row.eachCell((cell, colNumber) => {
            var newCell = newRow.getCell(colNumber)
            for(var prop in cell)
            {
                newCell[prop] = cell[prop];
            }
        })
   })  

这就是我对我的项目所做的。它运作良好。

于 2020-03-09T07:23:04.937 回答
2

使用合并单元格复制工作表

 var ws1 = workbook.getWorksheet('demo');
  let copySheet = workbook.addWorksheet('newdemo');

  copySheet.model = Object.assign(ws1.model, {
    mergeCells: ws1.model.merges
  });
  copySheet.name = 'new demo';
于 2019-01-18T04:38:59.857 回答
0

您可以使用 ExcelJS 将整个工作表从一个 Excel 工作表复制到另一个工作表。下面的代码将工作

const Excel = require('exceljs');

async function copyExcel() {
    let targetWorkbook = new Excel.Workbook();
    targetWorkbook = await targetWorkbook.xlsx.readFile('target.xlsx');
    const targetWorksheet = targetWorkbook.getWorksheet('target'); // you can add new sheet as well.

    let sourceWorkbook = new Excel.Workbook();
    sourceWorkbook = await sourceWorkbook.xlsx.readFile('source.xlsx');
    const sourceWorksheet = sourceWorkbook.getWorksheet('source');

    sourceWorksheet.eachRow({ includeEmpty: false }, (row, rowNumber) => {
        var targetRow = targetWorksheet.getRow(rowNumber);
        row.eachCell({ includeEmpty: false }, (cell, cellNumber) => {
            targetRow.getCell(cellNumber).value = cell.value;
        });
        row.commit();
    });
    await targetWorkbook.xlsx.writeFile('target.xlsx');
}

copyExcel();
于 2018-10-09T17:19:53.447 回答