Workbooks, sheet by sheet
An oversized workbook usually needs splitting for the same reason a CSV does — row limits on imports, attachments that bounce, collaborators who only need their slice. Each part comes out as a proper .xlsx (or CSV, if you prefer), with the header row repeated so every file stands alone, and multi-sheet workbooks are split sheet by sheet with the sheet name in each file name.
SheetJS parses and rewrites everything in your browser — the workbook never uploads, which for spreadsheets full of customers and numbers is the only acceptable arrangement. The CSV splitter is the same tool tuned for CSV output.