tafia / calamine

A pure Rust Excel/OpenDocument SpreadSheets file reader: rust on metal sheets
MIT License
1.6k stars 155 forks source link

Expose dimensions methods to the public #428

Closed MichelCarroll closed 2 months ago

MichelCarroll commented 2 months ago

I ran into a bug in my platform where the .worksheets() method would end up allocating an insane amount of memory (500 Gb) for what looked like a normal 10Mb Excel file (user uploaded). Turns out one of its sheets had a very large number of empty cells, and calamine was trying to put the entire thing in memory. I added a check in my code to stop processing sheets that exceed a certain threshold of cells. However, in order to do this, I had to fork your codebase to expose the dimensions function. Otherwise, I couldn't find a way to see how big a sheet is without loading the entire thing.

Posting in case it helps somebody else!