首页 > 解决方案 > 使用 exceljs 节点包创建 xlsx 文件

问题描述

我正在使用 exceljs 3.8 创建新的 xlsx 文件,但由于某些原因下面的代码不起作用?

     createNewExcelFile:  function (excelFilePath) {
           //excelFilePath: Provide path and file name for excel file
           // load exceljs module
           var workbook = new exceljs.Workbook(); //create object of workbook
           //add sheet to workbook
           var newSheet = workbook.addWorksheet('TestData');
           //use write file function to create new file
           workbook.xlsx.writeBuffer(excelFilePath) 
               .then(function () {
                   console.log("excel file created successfully");
               });
       }

createNewExcelFile('new1.xlsx');

console.log 正在记录“成功创建 excel 文件”,但我没有看到任何文件被创建的地方。

标签: javascriptnode.jsfilenpmexceljs

解决方案


1.你应该使用writeFile而不是writeBuffer

workbook.xlsx.writeFile(excelFilePath);

(来源:https ://github.com/exceljs/exceljs#writing-xlsx )

2.xlsx-renderer

我还建议使用xlsx-rendererwhich 提供基于 Template 和 ViewModel 生成 excel 文件。

模板 + ViewModel = Preaty XLSX

模板: 模板文件

虚拟机:

{
"projects": [
    {
        "name": "ExcelJS",
        "role": "maintainer",
        "platform": "github",
        "link": "https://github.com/exceljs/exceljs",
        "stars": 5300,
        "forks": 682
    },
    {
        "name": "xlsx-import",
        "role": "owner",
        "platform": "github",
        "link": "https://github.com/siemienik/xlsx-import",
...

给出: 在此处输入图像描述

这个库非常适合您的代码,因为它也基于 ExcelJs。

(来源:https ://github.com/Siemienik/xlsx-renderer/tree/master/tests/integration/data/Renderer009-ForEach-Average )

编辑:(29.04.2020) 在实践中,它被以下代码使用:

const result = await renderer.renderFromFile('./report-template.xlsx', { awesome:"Oh yeah!", items:[/*...*/]});
await result.xlsx.writeFile('./my-awesome-report.xlsx');

推荐阅读