2016-09-05 4 views
1

私はexceljsを使用してExcelファイルを生成する帆アプリケーションを持っています。そのdocumenatationを見て:Sailsjsはデータストリームをダウンロードします

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()を試してみましたが、成功しませんでした。私は行方不明のものがありますか?

EDIT

以下の答えは、ほとんどの権利です。私は以下のことをして、それは働いた。以前のソリューションでは、ファイルが破損することがありました。

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インスタンスとローカルで動作しました。

答えて

1

解決策: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(); 
+0

動作していないようです。コンテンツはなくなりました。 – KVISH

+0

@KVISHは今すぐ動作するはずです。私はストリームの使用によって混乱しました。 xlsx.writeが応答に書き込むことができるので、ストリームを直接使用する必要はありません。 –

+0

奇妙なことは私のMacでは動作しますが、EC2インスタンスでは動作しません。奇妙な。 – KVISH

関連する問題