First, as you may or may not know, Spreadsheet::WriteExcel currently uses the BIFF5 format (i.e. Office 95 & earlier). For Excel 97 & later, they use BIFF8 (or BIFF8x for XP). After thinking about this a bit, I've decided not to do a straight port of John's module, but rather to (foolishly?) attempt to start with BIFF8 support from the get go.
Actually, I think I'm going to layout each BIFF format as its own class, starting with BIFF8, and adding BIFF5 and BIFF8x as time goes on. I don't think there's any need to support BIFF2 or BIFF4 these days, but I could be wrong, and they can always be added as their own classes later (in my fantasy world, anyway).
Another huge can of worms is that there is no pure Ruby recursive descent parser (used for formulas), though there extensions for lex, yacc and bison. On top of that, I know next to nothing about parsers in general.
The pain, the pain!