CSV in Excel umwandeln – und Excel zurück in CSV
Aus einer CSV-Datei wird hier eine echte .xlsx-Arbeitsmappe: fette Kopfzeile, fixierte erste Zeile, Spaltenbreiten passend zum Inhalt, Zahlen als Zahlen. Umgekehrt liest das Werkzeug eine Excel-Datei ein, lässt dich bei mehreren Arbeitsblättern eines auswählen und gibt es als CSV mit frei wählbarem Trennzeichen aus. Beides passiert komplett in deinem Browser – kein Upload, keine Anmeldung, keine Warteschlange.
Warum entschärft das Werkzeug Zellen mit =, +, - und @?
Weil Tabellenprogramme den Inhalt einer Zelle ausführen, wenn er wie eine Formel aussieht. Das betrifft Excel, LibreOffice Calc und Google Sheets gleichermaßen, und die OWASP führt den Angriff unter dem Namen CSV-Injection (auch Formula Injection). Der Klassiker sieht so aus:
=cmd|' /C calc'!A0
Landet diese Zeichenfolge über ein Web-Formular in einem Export und öffnet jemand die Datei, versucht das Tabellenprogramm eine externe Anwendung zu starten. Andere Varianten laden per WEBSERVICE() oder HYPERLINK() Inhalte nach und schicken dabei Zellinhalte an eine fremde Adresse – Datenabfluss ohne einen einzigen Klick des Opfers.
Der übliche Gegenmittel-Vorschlag ist ein vorangestelltes Apostroph, und genau das macht dieses Werkzeug beim Schreiben der .xlsx. Zwei Dinge dazu ehrlich gesagt:
- Das Apostroph ist in der Zelle sichtbar. Ein unsichtbarer Schutz wäre schöner, ist im XLSX-Format aber nicht verlässlich abbildbar.
- Echte negative Zahlen wie
-5oder-1.5e3werden nie angefasst, sonst zerstörte der Schutz jede Buchhaltung.
Wer die Daten aus einer vertrauenswürdigen Quelle hat, kann die Entschärfung mit einem Häkchen abschalten.
Was schreibt das Werkzeug, und was nicht?
Geschrieben wird .xlsx – Office Open XML, seit Excel 2007 das Standardformat und im Kern eine ZIP-Datei mit XML darin. Es wird von Excel, LibreOffice, Numbers und Google Sheets gelesen.
Nicht geschrieben wird das alte .xls. Das ist ein proprietäres Binärformat, dessen korrekte Erzeugung im Browser unverhältnismäßig aufwendig wäre. Wer zwingend .xls braucht, öffnet die erzeugte .xlsx einmal in Excel und speichert sie dort um.
Die Grenzen einer Excel-Tabelle liegen ohnehin woanders: Eine .xlsx-Datei fasst 1.048.576 Zeilen und 16.384 Spalten je Blatt. Dieses Werkzeug übernimmt bis zu 100.000 Zeilen, damit der Browser-Tab bedienbar bleibt, und sagt es, wenn abgeschnitten wurde.
Was geht beim Weg von Excel nach CSV verloren?
Eine CSV-Datei enthält genau eine Tabelle aus Text. Alles andere fällt weg:
- Formeln werden mit ihrem zuletzt berechneten Ergebnis übernommen – CSV kennt keine Formeln.
- Formatierungen, Farben, Rahmen, verbundene Zellen, Bilder, Diagramme und Kommentare verschwinden.
- Weitere Arbeitsblätter bleiben außen vor; du wählst aus, welches exportiert wird.
- Datumswerte werden als
JJJJ-MM-TTgeschrieben, damit sie sortierbar und eindeutig bleiben.
Warum die UTF-8-Kennung am Dateianfang?
Excel rät beim Doppelklick auf eine CSV-Datei die Kodierung aus den Systemeinstellungen, statt UTF-8 anzunehmen. Ohne Kennung werden aus Umlauten die bekannten Buchstabenpaare. Die drei Bytes am Dateianfang lösen das Problem für den Doppelklick-Weg; sie stecken nur in der heruntergeladenen Datei, nicht im angezeigten Text. Manche Import-Skripte stolpern über die Kennung – dafür lässt sie sich abschalten.
Ehrliche Grenzen
Kein .xls, keine Makros, keine Pivot-Tabellen, keine Diagramme. Passwortgeschützte Arbeitsmappen lassen sich nicht öffnen. Sehr große Dateien kosten Arbeitsspeicher, weil die ganze Mappe im Browser aufgebaut wird – bei mehreren hunderttausend Zeilen ist ein Skript mit pandas oder openpyxl das passendere Werkzeug.