首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在快递中发送缓冲区数据?

如何在快递中发送缓冲区数据?
EN

Stack Overflow用户
提问于 2018-06-27 20:49:50
回答 2查看 23.5K关注 0票数 7

我正在尝试创建并发送一个excel文件给客户。客户端应该通过ajax请求下载文件,因为我需要过滤器参数。

我正在使用excel4node包创建一个excel文件。

我写了下面的代码,它现在是有效的,但我怀疑如果我有比缓冲区更大的数据会怎么样。这是使用buffer的正确方式吗?(请用writeToBuffer方法检查行)

代码语言:javascript
运行
复制
    const xl = require('excel4node');

    const excelCreator = function (data) {...}

    app.post('/api/excel', jsonParser, (req, res) => {

      let reqObj = {
        method: 'post',
        url: apiUrl + '/MemberService';,
        headers: {
          'Content-Type': 'application/json'
        },
        data: req.body
      };

      axios(reqObj)
        .then(response => {
          res.body = responseHandler(response); // a helper function to set res object

          let data = res.body.Data;

          res.setHeader('Content-Disposition', 'attachment; filename=' + 'excel.xlsx');
          res.type('application/octet-stream');
          res.body.Data = null;

          excelCreator(data).writeToBuffer().then(function (buffer) {
            res.body.Data = buffer;
            res.send(res.body);
          });

        })
        .catch(...);
    });
EN

回答 2

Stack Overflow用户

发布于 2019-01-31 02:45:41

首先安装SheetJS js-xlsx

代码语言:javascript
运行
复制
npm --save install xlsx

然后,您可以使用Express发送此响应:

代码语言:javascript
运行
复制
const xlsx = require('xlsx')

var wb = xlsx.utils.book_new();

var table = [['a', 'b', 'c'], ['1', '2', '3']]
var ws = xlsx.utils.aoa_to_sheet(table);
xlsx.utils.book_append_sheet(wb, ws, 'test');

// write options
const wopts = { bookType: 'xlsx', bookSST: false, type: 'base64' };
const buffer = xlsx.write(wb, wopts);

res.writeHead(200, [['Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']]);
res.end(new Buffer(buffer, 'base64'));

请随时查看文档的https://www.npmjs.com/package/xlsx

票数 10
EN

Stack Overflow用户

发布于 2020-08-19 16:42:57

代码语言:javascript
运行
复制
           Package used:
           npm install xlsx --save
代码语言:javascript
运行
复制
            import * as XLSX from 'xlsx';

            var json =[
                {
                'Fullname' : "Ram Shrestha",
                'Date Of Birth':"1996-06-01",
                'Gender': "Male",
                'Salary':"80000",
                'Designation':"Senior"
               },
               {
                'Fullname' : "Ramesh Shrestha",
                'Date Of Birth':"1997-06-01",
                'Gender': "Male",
                'Salary':"90000",
                'Designation':"Senior"
              }
           ];

            const fileName = "Sample";

            const workBook: XLSX.WorkBook = XLSX.utils.book_new();
            
            const workSheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
    
            XLSX.utils.book_append_sheet(workBook, workSheet, `${excelFileName}`)
            const buffer = XLSX.write(workBook, { bookType: 'xlsx', bookSST: false, type: 'base64' });
    
            res.writeHead(200, [
                ['Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
                ["Content-Disposition", "attachment; filename=" + `${fileName}.xlsx`]
            ]);
            res.end(Buffer.from(buffer, 'base64'));

希望它能起作用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51063253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档