Node.js(Hapi.js)でExcellを操作するためにExcellJSライブラリを使用しています。Excelljs - ストリームからシートを作成する方法
アップロードされたファイルに基づいてワークシートを作成しました。私はこのような何かをした:
uploadItems: function (request, reply) {
var data = request.payload;
if (data.file) {
var name = data.file.hapi.filename;
//var path = __dirname + "/uploads/" + name;
var path = process.cwd() + "/uploads/" + name;
var file = fs.createWriteStream(path);
data.file.on('end', function (err) {
var workbook = new Excel.Workbook();
var bulkParts = [];
workbook.xlsx.readFile(path)
.then(function (workbook) {
workbook.eachSheet(function (worksheet, sheetId) {
worksheet.eachRow({includeEmpty: true}, function (row, rowNumber) {
var singleItem = new _Items(data.ProductId, row.values[1], row.values[2]);
bulkParts.push(singleItem);
console.log("Row " + rowNumber + " = " + JSON.stringify(row.values));
});
});
file.on('error', function (err) {
console.error(err)
});
data.file.pipe(file);
}
...
これは動作します。このメソッドはstreamからファイルを作成し、このファイルを読み込んでオブジェクトを作成します。むしろストリームから直接ファイルを作成して、ディスク上の作成を避けたいと思います。エクセルプラグインの
Documentationこの言及:
// pipe from stream
var workbook = new Excel.Workbook();
stream.pipe(workbook.xlsx.createInputStream());
をしかし、正直なところ、私は多くの方法を試みたが、ちょうどカントはそれがストリームからオブジェクトをクリートしてもらいます。 何か助けていただければ幸いです。
stream.pipe(workbook.xlsx.createInputStream())。pipe(file)はどうですか? –
私はしようとします、私はどのように私のブックにアクセスしますか? 'Then'は実装されていませんか? –