| 
									
										
										
										
											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
										 |  |  | }); |