Skip to content

Instantly share code, notes, and snippets.

@norbornen
Last active November 7, 2019 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save norbornen/ebc1a13932d14ce52b16958d518df7cb to your computer and use it in GitHub Desktop.
Save norbornen/ebc1a13932d14ce52b16958d518df7cb to your computer and use it in GitHub Desktop.
nodejs jsreport client stream
// @ts-check
const fs = require('fs');
const client = require("jsreport-client")("http://localhost:5488");
const { finished } = require('stream');
(async () => {
try {
const data = {
"customer": "Тратата через атом!!",
"month": "May",
"taxPercentage": 0.21,
"detail": [
{ "date": "2019-04-03", "product": "Vitamin C", "category": "Health", "unitPrice": 25, "quantity": 1, "discountPercentage": 0 },
{ "date": "2019-04-03", "product": "Probiotics", "category": "Health", "unitPrice": 83, "quantity": 1, "discountPercentage": 0.25 }
]
};
await new Promise(async (resolve, reject) => {
const report = await client.render({
template: {
name: 'sales-main'
},
data
});
const w = fs.createWriteStream('report.xlsx');
report.pipe(w);
finished(report, (err) => {
if (err) {
console.error('Report stream failed:', err);
reject(err);
}
});
finished(w, (err) => {
if (err) {
console.error('Writable stream failed:', err);
return reject(err);
}
resolve();
});
});
} catch (err) {
console.error(err);
}
process.exit(0);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment