src/orders/ingestion/parsers/excel.parser.ts
Methods |
| parse | ||||||
parse(buffer: Buffer)
|
||||||
|
Parameters :
Returns :
literal type
|
import * as XLSX from 'xlsx';
export interface SheetData {
name: string;
rows: any[][];
csvText: string;
rowCount: number;
}
export class ExcelParser {
parse(buffer: Buffer): { sheets: SheetData[]; rawText: string } {
const workbook = XLSX.read(buffer, { type: 'buffer', cellDates: true });
const sheets: SheetData[] = [];
for (const sheetName of workbook.SheetNames) {
const worksheet = workbook.Sheets[sheetName];
const jsonData = XLSX.utils.sheet_to_json(worksheet, {
header: 1,
defval: '',
blankrows: false,
});
const csvText = XLSX.utils.sheet_to_csv(worksheet);
sheets.push({
name: sheetName,
rows: jsonData as any[][],
csvText,
rowCount: jsonData.length,
});
}
const rawText = sheets
.map(
(s) => `=== Sheet: ${s.name} (${s.rowCount} rows) ===\n${s.csvText}`,
)
.join('\n\n');
return { sheets, rawText };
}
}