Don’t include an extensions list in Roo::Base#file_type_check, and only create the warning message if it is to be displayed.
Extract common file handling logic to local_filename helper.
Accept the tmpdir_root option in Excelx.
Pass the block through to make_tmpdir, thus allowing non-block usage of mktmpdir.
Rename s_attribute to style, and attribute2format to style_format.
A roo_ tmpdir prefix seems more appropriate.
In Excelx, load styles, shared strings and the workbook lazily.

Leave the tmpdir open so that reading may take place after initialize. The OS will be responsible for cleaning it up.
Start extracting a new Excelx::Sheet class to manage the lazy loading and simplify access all around.

Initially it just handles hyperlinks.
Move comments handling into Excelx::Sheet
Lazily initialize @default_sheet, to avoid reading the sheets earlier than necessary. Use the #default_sheet accessor instead.
Move the implementation of #load_xml to .load_xml as it doesn’t rely on any instance data.
Move Excelx cell management into Excelx::Sheet, and the new Excelx::Cell. Move the existing SharedStrings, Styles, and Workbook management into new extractor classes.
Extract 3 Extractors from Excelx::Sheet, handling Comments, Relationships, and the SheetsDoc.
Fix that file_type_warning_message wasn't looking up the class properly.