Meine Traumlösung ist XML. XML ist im Gegensatz zum "richtigen" Excel-format gut lese- und schreibbar, hat aber im Gegensatz zu CSV formatierungsmöglichkeiten, wie z.b. spaltenbreite, farben...
Das ist das Problem, ohne Spezifikation bist du ziemlich aufgeschmissen (s.u.).
Wenn ich richtig verstehe was du mit spezifikation meinst(Wie muss die Datei aussehen, dass die Tabelle nacher so und so aussieht) dann ist dass nicht sonderlich schwer, da du jede wunschtabelle bauen , diese in xml exportieren und anschauen kannst.
Wenn sich die Styles nicht ändern, ist es sicher kein Problem. Schwierig wird es, wenn du Formatierungen, für die es noch keinen Style gibt, selber anlegen musst. Vor diesem Hintergrund halte ich CSV trotz fehlender Formatierungen für die einfachere Lösung.
Also tschuldigung, aber die styles sind wirklich nicht viel schwerer wie eine farbangabe in html. z.B.:
---------------------------------------------------------------
<Style ss:ID="s23">
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
<Interior ss:Color="#808080" ss:Pattern="Solid"/>
</Style>
---------------------------------------------------------------
Style id= einfach fortlaufende nummer. wenn man auf einer seite keinen rand möchte, die entsprechende zeile für top,buttom,right oder left zu löschen müsste man auch hinbekommen.
Und dass dieses "#808080" da unten wohl die Farbe ist dürfte auch zu erraten sein.
Das letzendliche Konstrukt bleibt gleich. Und mit Rand+Farbe kann man schon die wichtigsten Funktionen benutzen.
Sachen wir Formeln oder Zahlenformatierungen sind auch nicht schwerer. Da steht irgendwo ein type="number" oder so ähnlich und das wars.