From 7fd3a392cdc0315f37de918c7e3871c77c8e055f Mon Sep 17 00:00:00 2001 From: Renzo Beux <renzobeux@gmail.com> Date: Wed, 1 Sep 2021 20:01:50 -0300 Subject: [PATCH] continue with implementation taking into account sheet prototype given by analysts staff --- src/Controllers/ExcelController.ts | 5 ++-- src/Services/ExcelPaserService.ts | 9 -------- src/Services/SheetService.ts | 36 +++++++++++++++++++++++++++++ src/Services/test.xlsx | Bin 0 -> 17806 bytes src/routes.ts | 2 +- 5 files changed, 40 insertions(+), 12 deletions(-) delete mode 100644 src/Services/ExcelPaserService.ts create mode 100644 src/Services/SheetService.ts create mode 100644 src/Services/test.xlsx diff --git a/src/Controllers/ExcelController.ts b/src/Controllers/ExcelController.ts index ef4fe76..18a8dd1 100644 --- a/src/Controllers/ExcelController.ts +++ b/src/Controllers/ExcelController.ts @@ -1,9 +1,10 @@ +/* eslint-disable import/extensions */ /* eslint-disable no-console */ import { Request, Response } from "express"; +import { parseExcelService } from "../Services/SheetService"; const parseExcel = async (req:Request, res:Response) => { - console.log(req); - console.log(res); + res.status(200).send(parseExcelService()); }; module.exports = { diff --git a/src/Services/ExcelPaserService.ts b/src/Services/ExcelPaserService.ts deleted file mode 100644 index 4aaaf92..0000000 --- a/src/Services/ExcelPaserService.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as XLSX from "xlsx"; - -const parseExcel = (excelFile) => { - XLSX.readFile(excelFile); -}; - -module.exports = { - parseExcel, -}; diff --git a/src/Services/SheetService.ts b/src/Services/SheetService.ts new file mode 100644 index 0000000..9311351 --- /dev/null +++ b/src/Services/SheetService.ts @@ -0,0 +1,36 @@ +/* eslint-disable no-param-reassign */ +/* eslint-disable no-plusplus */ +/* eslint-disable import/prefer-default-export */ +/* eslint-disable no-console */ +import * as XLSX from "xlsx"; + +/* PRIVATE FUNCTIONS */ +const ec = (r:any, c:any) => XLSX.utils.encode_cell({ r, c }); +const deleteRow = (ws:any, rowIndex:any) => { + const variable = XLSX.utils.decode_range(ws["!ref"]); + for (let R = rowIndex; R < variable.e.r; ++R) { + for (let C = variable.s.c; C <= variable.e.c; ++C) { + ws[ec(R, C)] = ws[ec(R + 1, C)]; + } + } + variable.e.r--; + ws["!ref"] = XLSX.utils.encode_range(variable.s, variable.e); +}; + +/* EXPORT FUNCTIONS */ +export const parseExcelService = () => { + const workbook = XLSX.readFile("src\\Services\\test.xlsx"); + // TODO: need definition of sheet + workbook.SheetNames.forEach((sheetName) => { + const worksheet = workbook.Sheets[sheetName]; + const ref = worksheet["!ref"]!; + const range = XLSX.utils.decode_range(ref); + range.s.c = 0; // 0 == XLSX.utils.decode_col("A") + range.e.c = 1; // 6 == XLSX.utils.decode_col("B") + const newRange = XLSX.utils.encode_range(range); + deleteRow(worksheet, 0); + const parsed = XLSX.utils.sheet_to_json(worksheet, { range: newRange }); + console.log(parsed); + return parsed; + }); +}; diff --git a/src/Services/test.xlsx b/src/Services/test.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5c97acff2e60070edb20b52a1d7e9d28b9981e68 GIT binary patch literal 17806 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 N0M(!Ty=o2U{{Z(hnp6M) literal 0 HcmV?d00001 diff --git a/src/routes.ts b/src/routes.ts index d24b4c3..a8a3418 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -41,6 +41,6 @@ router.get("/", (req:Request, res:Response):void => { * excelParsed: * type: string */ -router.post("/excelParser", parseExcel); +router.get("/excelParser", parseExcel); module.exports = router; -- GitLab