Practical Spreadsheet Parsing with SheetReader
Abstract
Limitations of Current Spreadsheet Parsers. Despite the ubiquity of spreadsheets, efficient parsing has received far less attention than parsing other text-based formats. Recent work on CSV and JSON has produced highly optimized, structure-aware parsers [7, 10, 11, 16], yet these techniques do not transfer to spreadsheets. XLSX files package worksheets in a compressed ZIP archive containing several interdependent XML documents, including shared-string tables and cell-level markup. Accordingly, state-of-the-art spreadsheet loaders rely on standard DOM or SAX parsers. Although XML parsing has seen substantial research [9, 13], these techniques target general-purpose documents and cannot exploit spreadsheet-specific structure. As a result, existing loaders perform unnecessary tokenization and materialize large in-memory XML trees, which can reach several gigabytes even for moderately sized files [6]. Spreadsheet ingestion, therefore, remains inefficient in practice and requires a more targeted parsing approach. Spreadsheets remain a ubiquitous tool for data management and analysis. Since systems like Excel offer limited analytical capabilities, users routinely load spreadsheets into richer ecosystems such as Python, R, and DBMSes. However, existing spreadsheet loaders rely on general-purpose XML parsers that are ill-suited for the XLSX format, resulting in severe CPU and memory bottlenecks. In prior work, we introduced SheetReader, a specialized spreadsheet parser that leverages the structure of XLSX files and employs parallelism to significantly reduce ingestion costs, achieving up to an order of magnitude speedup and multigigabyte memory savings compared to state-of-the-art methods. This demonstration provides an interactive workbench where visitors can visualize XLSX internals, benchmark SheetReader against baseline parsers with live resource monitoring, and explore integrations for Python, R, PostgreSQL, and DuckDB, including running SQL directly over spreadsheets.
Assigned reviewers
No reviewers assigned yet.
Candidates from the panel ranked by taxonomy affinity
| # | Reviewer | Match | Load | Why |
|---|