exceljs - создать файл xlsx и загрузить не работающий - узел js и express js - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь создать и загрузить файл Excel из серверной части. Я использую узел JS и экспресс JS. Попытался использовать exceljs для достижения этой цели. Но я не могу заставить это работать. Я попытался выполнить поиск здесь в SO, но не смог найти никакого решения.

Я использую код, указанный ниже:

   const Excel = require('exceljs'), 
         tempfile = require('tempfile')
   let workbook = new Excel.Workbook();
    let worksheet = workbook.addWorksheet('My Sheet'), fileName = 'FileName.xlsx';;

    worksheet.columns = [
        { header: 'Id', key: 'id', width: 10 },
        { header: 'Name', key: 'name', width: 32 },
        { header: 'D.O.B.', key: 'dob', width: 10 }
    ];
    let rows = [

        {id:6, name: 'Barbara', dob: new Date()}
    ];
    worksheet.addRows(rows);

    let tmp = tempfile('.xlsx');
    workbook.xlsx.writeFile(tmp).then(function() {
        console.log('file is written');
        response.download(tmp, function(err){
            console.log('---------- error downloading file: ' + err);
        });
    });

Я попытался отправить файл вместо загрузки, но он не работает. В браузере в ответе я вижу странный вывод. И нет загрузки.

enter image description here

Может кто-то указать, что я здесь не так делаю?

EDIT

Также я попытался добавить следующий код, но это не помогло.

response.setHeader('responseType' , 'arraybuffer');
response.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
response.setHeader('Content-Disposition', 'attachment; filename=' + fileName);
...