Подавать файл xlsx от NodeJs - PullRequest
       4

Подавать файл xlsx от NodeJs

0 голосов
/ 27 февраля 2020

Я новичок в nodejs и мне нужно знать, как обслуживать файл xls, используя Node js из буфера вместо фактического сохранения файла в каталоге пути сервера. Я установил пакет xlsx для генерации Excel.

Express имеет опцию загрузки, которая позволяет мне передавать файл из каталога сервера и загружать его в браузере.

const express = require('express');
const app = express();

var fs = require('fs');
var xlsx = require('xlsx');

app.get('/download', async function (req, res) {
    let path = 'documents/';
    let fileName = 'data.xlsx';
    let fullPath = path+fileName; 

    await generateFile(fullPath);

    res.download(fullPath,fileName, function (err) {
        if (err) {
          console.log('error : '+err);
        } else {
          console.log('Downloaded file successfully');
           //Remove the file from document directory 
            fs.unlink(fullPath, (err) => {
                if (err) {
                console.error(err)
                return
                }
            });
        }
      })
  });

  async function  generateFile(fileName){
    let data=[[ "S", "h", "e", "e", "t", "J", "S" ],[  1 ,  2 ,  3 ,  4 ,  5 ]];    
    let workSheet = xlsx.utils.aoa_to_sheet(data);
    let workBook = xlsx.utils.book_new();
    xlsx.utils.book_append_sheet(workBook,workSheet,'My Sheet');
    xlsx.writeFile(workBook,fileName);  
  }

app.listen(8081,()=>{
    console.log('Server is running on port 8081');
});

В приведенном выше коде я делаю четыре шага. 1. Сгенерируйте файл 2. Запишите его на серверный путь 3. Отправьте файл в браузер для загрузки. 4. Удалите файл из пути.

Есть ли способ избежать шага 2 и шага 4? Мне нужно сгенерировать файл, может быть, сохранить его в буфере и скачать его в браузере. Или есть лучший способ. Пожалуйста, предоставьте предложения.

Заранее спасибо

...