The problem originates in some peculiar number format strings used in "Stdtest-Formulas-from-E10-to-E40-Wrong-ORIGINAL.xls":
The currency values are formatted as _-* #,##0.00" €"_-;\-* #,##0.00" €"_-;_-* \-??" €"_-;_-@_-. Nice, isn't it? This format string consists of four sections separated by colons: the first one for positive value, the second one for negative values, the third one for zero values, and the last one for text display. OpenDocument number formats have only up to three sections, and in fact, I never understand what the forth sections is good for. Therefore the ods writer raised an exception if it meets such a format. But of course, this is too harsh - why should writing of the entire file fail because of such a minor detail? I removed the exception now and fixed the writer to truncate after three sections.
The values in cells F7:K7 are not multiplied by the factor 100 - they should be because of the percent notation. Obviously the percentage sign was not interpreted correctly in your format string "0\ %" (without quotes). This was due to the space that is added between the zero and the percent character - fpspreadsheet expects nothing to be between percent and number format. Again, there is no reason for this limitation, and I extended the number format parser to accept this case too.
After these fixes spready I still could not write valid xlsx and ods files. After carefully inspecting the xls file with biffexplorer I found a tiny difference - one bit to be exact - between the percent format shown above and the one in the file: in the file the character between the '\' and the '%' is #$A0, instead of #$20 (space), no idea how you were able to enter this value. This incorrectly set bit destroyed the xml file...
After fixing this format string I was able to write the original xls file to xlsx and ods, and these files can be opened by Excel/LibreOffice. No formatting is lost