Idee ohne Erfolgsgarantie:
- colgroup benutzen und den entsprechenden Spalten (Element: col) mit break-before bzw. break-after die CSS-Eigenschaft für den Umbruch mitgeben.
- in den Zeilen (Element: tr) mit break-before bzw. break-after die CSS-Eigenschaft für den Umbruch mitgeben.
Das sind nur Ideen. Ganz generell ist HTML keine Eierlegende Wollmilchsau die als Beschreibungssprache sowohl für perfekte
- Anzeige auf dem Bildschirm
- Drucklayouts
- Datenexport und Import
gedacht war. Da sind besonders in Deinem Fall eine Menge Krücken nötig und ob das dann mit allen und womöglich auch noch alten Browsern (und dann noch "User-Agenten" bzw. "Clients" wie Excel) funktioniert ist höchst fraglich.
Im Zweifelsfall oder für perfekte Ergebnisse:
-
Einen perfekte Ausgabeform für den Datenexport in einem der folgenden Formate:
- Text/CSV,
- Text/JSON
- Text/XML
-
Eine spezielle Ausgabeform für die Anzeige am Bildschirm:
- Text/HTML
-
Eine perfekte Ausgabeform für das Drucken:
Krücke:
Und dann wäre da noch Javascript mit dem sich auch eine Tabelle "durchackern" und Zeilen bzw. spaltenweise auf mehrere Tabellen aufteilen lässt. Das aber weit weg von "ideal".
Billiger Mittelweg:
Und wenn wir schon dabei sind: Was hindert Dich daran, für die Druckausgabe eine zweite Version des Skriptes zu erschaffen, welches die Daten brav auf mehrere Tabellen verteilt? Das würde ich (nach Bedenken der vom Ergebnis her besten Möglichkeit, ideale Ausgabeformate zu wählen) als einfache und wahrscheinlich billigste Lösung erwägen. Dazu auch gleich die spezielle Ausgabe für den Datenexport als CSV, JSON oder XML - die übrigens nichts anderes als eine wunderbare Abkürzung des Wegs zum HTML-Dokument ist.
"Schweizermesser" haben für alles eine Klinge. Allerdings darf man nicht erwarten, dass diese funktionieren wie ein Spezialwerkzeug. Das gilt auch für HTML - welches nicht als "Schweizermesser" gedacht war, aber missbraucht wird.