Excel-Dateien lesen mal anders - über XML

Manchmal sind Excel-Dateien nicht sehr leicht als Tabellen mit einheitlichen Spalten zu interpretieren, zum Beispiel können in einer Spalte unterschiedliche Datentypen stehen. Oder man möchte nicht nur die Inhalte der Zellen, sondern auch Zellkommentare lesen. Dann sind die verfügbaren Verfahren für das Importieren von Excel-Dateien nach SAS nicht ohne weiteres anwendbar.

Da man Excel-Dateien auch im XML-Format speichern kann und da SAS in der Lage ist, das XML-Format zu lesen, besteht die Möglichkeit, sehr flexibel auf verschiedenste Eigenschaften von Excel-Dateien zuzugreifen.

Dieses Verfahren habe ich mit Excel 2003 und SAS 9.1.3 entwickelt. Inwieweit es auf andere Versionen übertragbar ist, wäre noch zu prüfen.

Wenn man obige Excel-Tabelle als XML-Datei abspeichert (Dateityp XML-Kalkulationstabelle) und diese mit dem anhängenden SAS-Programm einliest, erhält man eine SAS-Datei, die einen Datensatz pro Zelle der Excel-Datei enthält, siehe folgende Tabelle. (Wer es selbst probieren möchte: die erste %LET-Anweisung anpassen).

Beob. SheetName DataType RowId ColumnId ColumnAlpha data comment
1 Tabelle3 String 3 2 B Eins  
2 Tabelle3 Number 3 3 C 5  
3 Tabelle3 String 4 2 B Zwei  
4 Tabelle3 Number 4 3 C 6  
5 Tabelle3 String 5 2 B Drei Hier steht die Zahl drei
6 Tabelle3 Number 5 3 C 7.1  
7 Tabelle3 String 6 2 B Vier  
8 Tabelle3 Number 6 3 C 8.1  
9 Tabelle3 DateTime 7 3 C 1899-12-31T12:15:00.000  
10 Tabelle3 DateTime 8 3 C 2007-01-01T00:00:00.000  

Das Verfahren funktioniert auch mit sehr großen Excel-Dateien (viele Blätter und mehrere 10.000 Zellen). Leider hat das Verfahren aber noch ein Problem: Wenn Zellen oder Kommentare formatiert sind (Farben, Schriftgrößen etc.), dann stehen in der XML-Datei entsprechende HTML-Tags. Das konnte ich der XML-Libname-Engine noch nicht beibringen, sie liefert dann leere Zellen.

Excel-XML auch mit ODS

Da ich gerade nicht die Zeit habe, mich damit näher zu beschäftigen, hier einfach der Link zum heutigen Beitrag aus dem SAS Tech Report, bei dem es um ein ODS-Tagset geht, mit dem man Excel-Tabellen auf dem Umweg über XML schreiben kann (also umgekehrt wie mein obiger Beitrag).