Architecture & Tech Stack

How are spreadsheets read/written?

Spreadsheet handling uses ClosedXML for .xlsx, with a built-in quoted-field parser for .csv. This powers two things. On import, the setup wizard's bulk importer reads a catalogue spreadsheet, maps columns by case-insensitive header synonyms (so files from different sources still work), previews the contents, and then creates the category tree, products (by SKU), and per-branch…

Spreadsheet handling uses ClosedXML for .xlsx, with a built-in quoted-field parser for .csv. This powers two things. On import, the setup wizard's bulk importer reads a catalogue spreadsheet, maps columns by case-insensitive header synonyms (so files from different sources still work), previews the contents, and then creates the category tree, products (by SKU), and per-branch stock. On export, reports (Sales, Loyalty, Settlement) offer CSV downloads alongside on-screen and print versions. Using a dedicated library means large catalogues import reliably in batches, and exports are produced in a format finance and operations teams can open directly.