3

我正在开发一个 NodeJS 项目,我需要修改现有的 Excel 电子表格,但不更改原始格式或链接,只需向几个单元格添加值。目前我一直在使用exceljs它来修改电子表格时效果很好,但输出会删除所有原始样式、格式和链接。

是否有另一个 javascript npm 或库可以帮助我解决这个问题,或者是否有可能exceljs

这是我到目前为止所拥有的:

Fetch('url of the file')
    .then(res => res.buffer())
    .then(buffer => {
        var workbook = new Excel.Workbook();
        workbook.xlsx.load(buffer).then(function() {
            var worksheet = workbook.getWorksheet(1);
            var row = worksheet.getRow(4);
            row.getCell(2).value = 'It works!';
            row.commit();

            workbook.xlsx.write(stream)
                .then(function() {
                    // done
                    // here I take the stream and upload it to an AWS S3 bucket
                });
        });
    })

谢谢!

4

2 回答 2

3

我发现另一个npm做得很好!它是xlsx-populate

这是用于exceljs完成相同工作的相同代码:

Fetch('file url')
    .then(res => res.buffer())
    .then(buffer => {
        XlsxPopulate.fromDataAsync(buffer)
            .then(workbook => {
                // Make edits.
                workbook.sheet(0).cell("A1").value("foo");

                // Get the output
                return workbook.outputAsync();
            })
            .then(data => {
                // upload data to AWS S3
            })
            .catch(err => console.error(err));
    });

希望这对经历同样情况的人有所帮助:)

于 2018-07-17T16:33:57.163 回答
1

对于那些正在寻找 TypeScript 版本的人...

  1. 像往常一样安装 XlsxPopulate
  2. 从 JanLoebel 的优秀作品中引入该组件的 TypeScript 类型 ( https://github.com/JanLoebel/types-xlsx-populate )
  3. 编写代码来修改现有的 Excel 文件,如下所示:
    import { fromFileAsync } from 'xlsx-populate';
    ...
    fromFileAsync('input.xlsx').then(workbook => {
        let ws=workbook.sheet("Sheet1");
        ws.cell("C1").value("value in C1");
        ws.cell("C2").value("value in C2");
        return workbook.toFileAsync('input.xlsx');
    });

希望它对某人有用。

于 2020-01-29T08:13:53.023 回答