File

src/orders/ingestion/parsers/excel.parser.ts

Index

Methods

Methods

parse
parse(buffer: Buffer)
Parameters :
Name Type Optional
buffer Buffer No
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 };
  }
}

results matching ""

    No results matching ""