diff --git a/src/Controllers/ExcelController.ts b/src/Controllers/ExcelController.ts index ef4fe76c96bcb77b87323ae1ac1b6c9b2dd7ad25..18a8dd1c0cc55438532d5172e90aa80bc35c5e61 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 4aaaf92456a2a6358c847e5d3da9cdd3d232c2e4..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..9311351afcedf2753de3c88ccab54858b7e04236 --- /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 Binary files /dev/null and b/src/Services/test.xlsx differ diff --git a/src/routes.ts b/src/routes.ts index d24b4c3516c10556a23077cd81f36e8bcddf3495..a8a34182fdff6cac7565f002e15b508a74cd8976 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;