1

私はexceljs、Excel ファイルを生成するために使用している帆アプリケーションを持っています。彼らのドキュメントを見る:

https://www.npmjs.com/package/exceljs#writing-xlsx

ストリームへの書き込みを許可しているようです。

// write to a stream 
workbook.xlsx.write(stream)
    .then(function() {
        // done 
    });

ユーザーが応答を期待しているときにこれを行うにはどうすればよいですか?

私は以下を読みました:

http://sailsjs.org/documentation/concepts/custom-responses/adding-a-custom-response

http://sailsjs.org/documentation/concepts/custom-responses/default-responses

res.attachment()ファイルを保存した後にも試しましたが、成功しませんでした。足りないものはありますか?

編集

以下の答えはほぼ正しいです。私は次のことを行いましたが、うまくいきました。以前のソリューションでは、ファイルが破損することがありました。

    res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
    return workbook.xlsx.write(res)
      .then(function() {
        res.end();
      });

これは、EC2 インスタンスとローカルで機能しました。

4

1 に答える 1

2

解決策: https://github.com/guyonroche/exceljs/issues/37ワークブックを応答に書き込みます。

var Excel = require('exceljs');
var workbook = new Excel.Workbook();
var sheet = workbook.addWorksheet("My Sheet");
res.setHeader('Content-Type', 'application/vnd.openxmlformats');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
workbook.xlsx.write(res);
res.end();
于 2016-09-05T21:15:49.237 に答える