docs.sheetjs.com/docz/static/azure/index.js

38 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2023-04-29 11:21:37 +00:00
/* sheetjs (C) SheetJS -- https://sheetjs.com */
2023-10-06 20:47:17 +00:00
const { Blob } = require('buffer');
const { app } = require('@azure/functions');
2023-04-29 11:21:37 +00:00
const XLSX = require('xlsx');
2023-10-06 20:47:17 +00:00
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");
2023-04-29 11:21:37 +00:00
2023-10-06 20:47:17 +00:00
if (!f || !(f instanceof Blob)) {
return { status: 400, body: "Must submit a file for processing!" };
2023-04-29 11:21:37 +00:00
} else {
2023-10-06 20:47:17 +00:00
/* parse file */
const ab = await f.arrayBuffer();
const wb = XLSX.read(ab);
2023-04-29 11:21:37 +00:00
/* generate CSV from first sheet */
const csv = XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]]);
2023-10-06 20:47:17 +00:00
return { status: 200, body: csv };
2023-04-29 11:21:37 +00:00
}
2023-10-06 20:47:17 +00:00
} 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}` };
2023-04-29 11:21:37 +00:00
}
2023-10-06 20:47:17 +00:00
});