/* sheetjs (C) SheetJS -- https://sheetjs.com */ const { Blob } = require('buffer'); const { app } = require('@azure/functions'); const XLSX = require('xlsx'); app.http('SheetJSAzure', { methods: ['GET', 'POST'], authLevel: 'anonymous', handler: async (req, context) => { if (req.method == "POST") { /* grab the file at form key `upload` */ const formData = await req.formData(); const f = formData.get("upload"); if (!f || !(f instanceof Blob)) { return { status: 400, body: "Must submit a file for processing!" }; } else { /* parse file */ const ab = await f.arrayBuffer(); const wb = XLSX.read(ab); /* generate CSV from first sheet */ const csv = XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]]); return { status: 200, body: csv }; } } else if (req.method == "GET") { var ws = XLSX.utils.aoa_to_sheet(["SheetJS".split(""), [5, 4, 3, 3, 7, 9, 5]]); var wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, "Data"); var buf = XLSX.write(wb, { type: "buffer", bookType: "xlsx" }); return { status: 200, headers: { "Content-Disposition": `attachment; filename="SheetJSAzure.xlsx";` }, body: buf }; } else return { status: 500, body: `Unsupported method ${req.method}` }; } });