As the author of Spreadsheet::XLSX::Reader::LibXML I can confirm that the package was not written to be the fastest (skip to the last paragraph for those packages). I would however, like to certify an element of your initial question. You list Text::Iconv as one of the modules that you use. Since that is an option for Spreadsheet::XLSX and not For Spreadsheet::XLSX::Reader::LibXML which spreadsheet parser are you using?
MidLifeXis++ (xkcd++) already gave you the simple optimization to set group_return_type to 'unformatted' (fastest) or 'value' (a little less fast)
You mentioned a desire to get a whole row (#3). Use the fetchrow_arrayref command if you wish. The 'fetchrow_array' and 'fetchrow_hashref' commands are also documented in the Worksheet pod
Even with those elements this parser may still not be as fast as you want. I am always interested in improving my parser. My preference for improvement requests is for you to open an issue in my github repo so you can attach any files you are allowed or are willing to share for testing. I would be happy to see if there are speed optimizations available.
With all that said, Spreadsheet::XLSX and Spreadsheet::ParseXLSX are both faster XLSX parsers by design.
update:s/ParseExcel/ParseXLSX/In reply to Re: Convert XLSX to TSV and remove CRLF in cells
by jandrew
in thread Convert XLSX to TSV and remove CRLF in cells
by bulrush
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |