Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @module("/report")
- export default class ReportModule {
- @get("/excel", [])
- public async exportData(ctx) {
- if (!ctx.request.query.start_date || !ctx.request.query.end_date) {
- ctx.status = 400;
- ctx.body = {
- message: 'Please add start and end date'
- };
- return;
- }
- // ctx.body = {
- // message: `start date is ${ctx.request.query.start_date}, end date is ${ctx.request.query.end_date}`
- // }
- let q = await GuestbookModel.query()
- .select('Guestbook.*')
- // .leftJoin('Guestbook.id','Guestbook.entiy_id','Guestbook.data')
- .whereBetween('Guestbook.created_at', [ctx.request.query.start_date, ctx.request.query.end_date])
- if (q.length === 0) {
- ctx.status = 400;
- ctx.body = {
- message: 'Data for selected date empty'
- };
- return;
- }
- let data = await q;
- const wb = new xl.Workbook();
- const ws = wb.addWorksheet('Sheet 1');
- let style = wb.createStyle({
- font: {
- color: '#000000',
- size: 12,
- },
- numberFormat: '$#,##0.00; ($#,##0.00); -',
- });
- // mengambil data dari database
- // let dataExport = [];
- data.map(it => {
- data.push(JSON.parse(it.data))
- return it;
- })
- // ctx.body = {
- // dataExport
- // }
- //write column
- Object.keys(data[0]).map((it, index) => {
- ws.cell(1, index + 1).string(it).style(style)
- });
- data.map((it, row) => {
- Object.keys(it).map((prop, col) => {
- ws.cell(row + 2, col + 1).string(it[prop]).style(style);
- });
- });
- let fileName = uuid.v4();
- const uploads = path.resolve(path.join(__dirname, '../../uploads'));
- const filenameFull = path.join(uploads, `${fileName}.xlsx`);
- let result = await new Promise(((resolve, reject) => {
- wb.write(filenameFull, (err, stats) => {
- if (err) return reject(err);
- return resolve(stats);
- });
- }));
- await send(ctx, `${fileName}.xlsx`, { root: uploads });
- return;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement