I think the biggest weakness of spreadsheets is version control and testing. This really limits the potential for results that are both complex and correct.
There's nothing stopping you from checking your spreadsheets into version control just like any other text-based file format (or non-text-based format, for that matter).
Besides having a snapshot of each change, version control’s big advantage is the ability to compare versions and merge between branches. How do you accomplish that with a spreadsheet?
The same way you do those with any other text-based file format. Just make sure you are committing the raw (unzipped) OOXML and not the .xlsx.