Vor einiger Zeit stellten wir in dieser Rubrik antiword – einen Filter für Word-Dokumente – vor. Ein ähnlich brauchbares Stück Software für Excel-Tabellen fehlte bislang jedoch. Diese Lücke wird nun von xlhtml geschlossen.
out of the box
Es gibt tausende Tools und Utilities für Linux. “out of the box” pickt sich die Rosinen raus und stellt pro Monat ein Progrämmchen vor, das wir für schlichtweg unentbehrlich oder aber zu Unrecht wenig beachtet halten.
Ob CD-Liste, Vereinsstatistik oder Kochrezept – das Szenario gleicht sich: Da bekommt man, nichts Böses ahnend, Mail von Bekannten, Freunden oder Kollegen mit dem Wortlaut: “Du hast doch sicher Excel, ich hab’ Dir das Teil als .xls-Datei geschickt.” Wer jetzt als Linux-User tatsächlich kein Excel hat (oder nicht umbooten möchte) und zum Betrachten einer einfachen Liste auch nicht erst ein Monsterprogramm wie StarOffice starten will, hat ein Problem. Ähnlich ärgerliche Situationen ergeben sich, wenn man von Behörden ins Netz gestellte Statistiken ansehen möchte. Auch diese setzen häufig auf den “Standard” aus Redmond.
Ist der Leidensdruck groß genug, macht man sich früher oder später auf die Suche nach einem passenden Tool – zum Beispiel auf Freshmeat, meiner Lieblingsanlaufstelle für Open-Source-Software. Dort findet sich mit dem von Charles Wyble geschriebenen xlhtml ein Tool, das genau nach dem aussieht, was ein Excel-geplagter Linux-User braucht. Das Programm konvertiert Excel-Tabellen nach HTML, so dass sie von beliebigen Web-Browsern dargestellt werden können.
Ein Ausflug nach Chicago
Xlhtml hat seine Homepage unter der Adresse http://chicago.sourceforge.net/xlhtml/. Von dort (oder von der Heft-CD) holen Sie sich das Quellarchiv, das Sie zur Installation der Software brauchen. Weitere Voraussetzungen sind – natürlich – der GNU-C-Compiler und die üblichen Verdächtigen wie make und das Paket glibc-dev.
Die eigentliche Installation bringen Sie in wenigen Schritten über die Bühne:
tar xzf xlhtml-0.5.tgz cd xlhtml-0.5 ./configure make su (root-Passwort eingeben) make install ; exit
Anstelle der letzten Zeile haben Sie auch die Möglichkeit, das in “out of the box” 05/2002 besprochene Werkzeug checkinstall[1] einzusetzen:
checkinstall ; exit
So können Sie das Programm bei Bedarf einfach mit dem Paket-Manager Ihrer Distribution entfernen.
Nach dieser Prozedur befindet sich xlhtml im Verzeichnis /usr/local/bin, das üblicherweise in der PATH-Variable enthalten ist.
Ausprobieren
Um xlhtml zu testen, brauchen Sie nun ein Excel-Dokument. Falls sich ein solches nicht auf Ihrer Festplatte befindet, bedienen Sie sich der Datei Test.xls, die im xlhtml-Archiv enthalten ist. In dieser Tabelle werden alle bisher vom Programm unterstützten Spezialitäten wie Farben, Schriftarten und -attribute verwendet. Den ersten Test starten Sie mit dem Kommando
xlhtml Test.xls > Test.html
und betrachten die entstandene HTML-Datei Test.html mit einem Browser Ihrer Präferenz. Ein zweiter Test mit einer wahllos aus dem Netz gefischten Excel-Tabelle ist in den Abbildungen 1 (Darstellung in Excel unter Windows) und 2 (Darstellung der xlhtml-Ausgabe durch Netscape) zu sehen.
Doch nicht nur grafische Web-Browser eignen sich zum Anzeigen der durch xlhtml erzeugten Tabellen. Auch konsolenbasierte Programme dieser Gattung wie w3m oder links stellen bei solchen Dokumenten ihre Fähigkeiten unter Beweis (Abbildung 3).
Schneidetisch und Fremdformate
Wenn Sie sich nur für einen bestimmten Ausschnitt der Tabelle interessieren und die relevanten Zeilen- und Spaltenbereiche kennen, teilen Sie dies dem Programm mit den Optionen -xr (“extract row”) und -xc (“extract column”) mit. Ferner existiert noch die Option -xp (“extract page”), die bestimmte Seiten des Dokuments selektiert. Um aus der Tabelle diesel.xls die Zeilen 2 bis 5 und daraus wiederum die Spalten 0 bis 2 zu extrahieren und das Ergebnis direkt in der Textkonsole zu betrachten, geben Sie – eine w3m-Installation vorausgesetzt – Folgendes ein:
xlhtml -xr:2-5 -xc:0-2 diesel.xls | w3m -T text/html
Hierbei nutzen Sie aus, dass xlhtml die HTML-Seite auf die Standardausgabe schreibt und der Browser w3m direkt von der in eine Datei bzw. mit | an ein Kommando umleiten.” target=”_self” class=”glossary”>Standardeingabe lesen kann. Das Pipe-Zeichen (“|“) steht dabei für eine Weiterleitung der Ausgabe an das nachfolgende Kommando. Damit w3m mit den ihm übergebenen Daten etwas anfangen kann, müssen Sie ihm mit der Option -T noch sagen, um welches Format es sich handelt – text/html steht dabei für HTML.
xlhtml kennt aber noch weitere Ausgabeformate: Die Option -xml macht aus Excel XML (“Extensible Markup Language”), -csv erstellt kommaseparierte Werte (“Comma Separated Values”), und die Option -asc sorgt für puren ASCII-Text. Die letzten beiden Formate stehen nur in Kombination mit den -x-Optionen zur Verfügung. Wollen Sie etwa den Inhalt der Excel-Tabelle cdliste.xls als reinen Text sehen, geben Sie ein:
xlhtml -asc -xp:99 cdliste.xls
Da wir das gesamte Dokument lesen wollen, muss die der Option -xp übergebene Zahl (hier 99, es könnte aber auch 999 sein) größer sein als die tatsächliche Seitenanzahl. Alle weiteren Optionen des Programms beschreibt die Manpage, die Sie mit man xlhtml aufrufen.
Midnight Commander kann alles
Wie beim Word-Filter antiword[2] liegt auch bei xlhtml die Idee nahe, es als Filter in den eingebauten Betrachter des Datei-Managers Midnight Commander (mc) zu integrieren. Dazu müssen Sie die Datei ~/.mc/bindings lediglich um die folgenden zwei Zeilen erweitern:
shell/.xls
View=%view{ascii} xlhtml %f | w3m -T text/html -dump
Nun reicht es, zum Betrachten von Excel-Tabellen im mc die gewünschte Datei zu markieren und die Taste [F3] zu drücken.
Kraftpunkt
Der Autor von xlhtml war übrigens sehr fleißig: Im Quellarchiv befindet sich neben dem Excel-Konverter ein Programm namens ppthtml zum Umwandeln von Powerpoint-Dateien nach HTML. Man ruft es mit
ppthtml powerpoint_datei.ppt > html_datei.html
auf, sollte vom Ergebnis aber nicht zuviel erwarten: Es extrahiert derzeit lediglich Text.
Glossar
- Freshmeat
- Die erste Adresse für aktuelle Entwicklungen im Open-Source-Bereich. Sie ist unter http://freshmeat.net/ zu finden.
- HTML
- “HyperText Markup Language”, die ursprünglich am CERN entwickelte Auszeichnungssprache für Seiten des World Wide Web. Durch sogenannte Tags wird die Kennzeichnung bestimmter Textteile als Überschriften, Listen, Tabellen und ähnliches erreicht.
- make
- Programm zur Ablaufsteuerung beim Übersetzen von Quelltexten. Die Konfigurationsdatei von make (das Makefile) enthält dabei beispielsweise Informationen über Abhängigkeiten zwischen den einzelnen Programmmodulen.
- PATH
- In dieser Variablen sind durch Doppelpunkt (“colon”) getrennte Verzeichnisse aufgelistet. Diese durchsucht die Shell nach den Kommandos, die der Benutzer ohne Pfadangabe eingibt. So wird etwa top als /usr/bin/top gefunden.
- Standardeingabe
- Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar auf’s Terminal. Diese Ausgabe lässt sich mit dem Zeichen > in eine Datei bzw. mit | an ein Kommando umleiten.
- Standardausgabe
- Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar auf’s Terminal. Diese Ausgabe lässt sich mit dem Zeichen > in eine Datei bzw. mit | an ein Kommando umleiten.
Infos
[1] Christian Perle: “Installieren mit Rückwärtsgang”, LinuxUser 05/2002, S. 62 f., http://www.linux-user.de/ausgabe/2002/05/062-ootb/checkinstall-3.html
[2] Christian Perle: “Dagegen!”, LinuxUser 10/2001, S. 84 f.








