Рабочих варианта 4:
1) uno. медленно (очень! на моих бенчмарках получалась обработка ~10-20 ячеек/секунду), печально, ОО должен быть запущен на той же машине что и скрипт. плюсы — собственно 100я гарантия
2) xslx — как уже сказали, очень простой формат, парсится «руками».
3) xlutils — странно что убивал оформление если честно, xlutils.copy мои подобные задачи решал на 100% (не без напильника, да).
4) (editor's choice) формировать xlsx, потом через OO при необходимости конверить в xls. 2-3 секунды на файл