Mysql данных в файл Excel - PullRequest
       24

Mysql данных в файл Excel

0 голосов
/ 11 апреля 2019

Я работаю над nodeJs и React, у меня есть данные в хранилище mysql.в конечном счете мне нужно позволить пользователю загружать данные в формате Excel.Либо мы можем сделать в nodeJs или React.Я пытался создать файл в Node с помощью пакета excel4node. Файл создается успешно, но когда я отправляю файл, он не в формате Excel (некоторые файлы и папки xml), я использовал downloadJs во внешнем интерфейсе для запуска автоматической загрузки.

router.get('/:year/:month', async (req, res, next) => {
 res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
 res.setHeader('Content-Disposition', 'attachment; filename=' + 'Report.xlsx');
 res.sendFile(path.resolve('downloads/excel.xlsx'));
});
import downloadjs from 'downloadjs';

export const getReport = async (year, month) => {
  let res = await fetch(`${url}/get-report/${year}/${month}`, {
    method: 'GET',
    mode: 'cors',
  })
  let blob = await res.blob();
  await downloadjs(blob);
};

Это загружает zip-папку со списком XML-файлов.

Я попытался создать в React (на стороне клиента), отправив JSON из бэкэнда, для этого я использовал реагировать-excel-workbook, но ему нужны предварительно определенные данные, когда мы нажимаем, он неожиданно загружается с фиктивными данными и не ждет разрешения асинхронного действия.

Любая помощь будет оценена.

Или я должен отправить JSON из серверной части и на стороне клиента (преобразовать его в CSV и запустить загрузку .??

1 Ответ

0 голосов
/ 12 апреля 2019

Записать файл непосредственно в объект Response, вместо того, чтобы просматривать промежуточный файл

var xl = require('excel4node');
var wb = new xl.Workbook();
// sends Excel file to web client requesting the / route
// server will respond with 500 error if excel workbook cannot be generated
var express = require('express');
var app = express();
app.get('/', function(req, res) {
  wb.write('ExcelFile.xlsx', res);
});
app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...