Also, Excel will read the old BIFF files (XLS), CSVs, SYLK, and whatnot. You are doing, in reverse, exactly that which you oppose: "unless this library can open each and every and any file that Excel can, bug-for-bug compatible, it's Wrong!"
(While it is true that users will toss anything at you, it's quite pointless to expect one library to handle all of it: we used one to sniff the content, another to parse CSVs, yet another to parse XLSX, and in-house code for this obscure abomination which sadly still gets about 10% of use)
> it's quite pointless to expect one library to handle all of it
Libraries don't just come with implementation, but also a use model. Perl, for example has:
Spreadsheet::XLSX
Spreadsheet::ParseExcel
These have very different user (programmer) interfaces -- so different that now there's a Spreadsheet::ParseXLSX which just allows programmers (and programs) used to one interface, consume the new files with very little changes.
This rust library has it's own model, and if it's a good model it makes sense to implement other file formats with this model -- and indeed this is a good way to test if it's a good model.
Other things like CSV are so fundamentally different from XLS/XLSX that they're going to have a different model, and so it makes sense that these require different libraries.
(While it is true that users will toss anything at you, it's quite pointless to expect one library to handle all of it: we used one to sniff the content, another to parse CSVs, yet another to parse XLSX, and in-house code for this obscure abomination which sadly still gets about 10% of use)