1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| class ExcelParser { constructor({ file }) { this.file = file; }
getWorksheet() { return new Promise((resolve) => { const fileReader = new FileReader(); fileReader.onload = (e) => { const arrayBuffer = e.target.result; const workBook = XLSX.read(arrayBuffer, { type: 'array' }); resolve(workBook.Sheets); }; fileReader.readAsArrayBuffer(this.file); }); }
async getWorkSheetData() { const workSheet = await this.getWorksheet(); const sheetKey = Object.keys(workSheet)[0]; const sheet = workSheet[sheetKey]; const result = XLSX.utils.sheet_to_json(sheet); return result; }
async getRangeData(range) { const [startRow, endRow] = range; const workSheet = await this.getWorksheet(); const sheetKey = Object.keys(workSheet)[0]; const sheet = workSheet[sheetKey]; const decodeRange = XLSX.utils.decode_range(sheet['!ref']); const rowData = []; for (let row = startRow; row < endRow; row++) { const colData = []; for (let col = decodeRange.s.c; col <= decodeRange.e.c; col++) { const cell = sheet[XLSX.utils.encode_cell({ c: col, r: row })]; if (cell && cell.t) { const data = XLSX.utils.format_cell(cell); colData.push(data); } } rowData.push(colData); } return rowData; } }
export default ExcelParser;
|