Используя пакет узлов Excel js, создайте файл xlsx - PullRequest
0 голосов
/ 11 апреля 2020

Я использую Excel js 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 создан успешно " но я не вижу, где создается файл.

1 Ответ

1 голос
/ 28 апреля 2020

1. Вы должны использовать writeFile вместо writeBuffer

workbook.xlsx.writeFile(excelFilePath);

(Источник: https://github.com/exceljs/exceljs#writing -xlsx )

2. xlsx-renderer

Я бы также рекомендовал использовать xlsx-renderer, который обеспечивает создание файлов Excel на основе Template и ViewModel.

Template + ViewModel = Preaty XLSX

Template : Template file

VM:

{
"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",
...

Дает: enter image description here

Эта библиотека будет отлично работать с вашим кодом, поскольку она также основана на Excel Js.

(Источник: 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');
...