DMUG-Archiv 2000

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Excel-Dateien importieren

wenn es nicht gelingt, die Kommata vor dem Einlesen in Mathematica durch
Dezimalpunkte zu ersetzen, dann muss man die Schritte von Import selber
ausführen. In diesem Fall kann man ReadList[] verwenden, und Daten vom
Typ "Word" lesen.

Inhalt von /tmp/test.txt:
2,5     3       4,1
1,1     2,2     5,0

Einlesen, das Resultat ist eine Liste von Zeilen, jede Zeile eine Liste der
Zellen, die aber noch Strings sind (sieht man normalerweise nicht)

In[11]:=
input = ReadList["/tmp/test.txt", Word, NullWords -> True, 
    WordSeparators -> "\t", RecordLists -> True]

Out[11]=
{{2,5, 3, 4,1}, {1,1, 2,2, 5,0}}

(beim Lesen von CSV-Daten kann man WordSeparators->";" verwenden)

Diese Hilfsfunktion ersetzt Komma durch Punkt und wandelt dann nach
den Regeln von Mathematica in Ausdrücke um:

SetAttributes[StringToNumber, Listable];
StringToNumber[s_String] := ToExpression[StringReplace[s, "," -> "."]]

Damit:

In[12]:=
StringToNumber[input]

Out[12]=
{{2.5, 3, 4.1}, {1.1, 2.2, 5.}}

Jetzt sind's also Zahlen:

In[13]:=
Map[Head, %, {2}]

Out[13]=
{{Real, Integer, Real}, {Real, Real, Real}}

Wenn die Tabelle Spaltenüberschriften enthält, kann man vor der Umwandlung
die erste Zeile abtrennen, die soll ja als Strings bleiben.

Die Probleme mit dem Dezimalkomma sind übrigens der Hauptgrund dafür, dass
ich selber mit dem englischen Excel arbeite. Eine Alternative ist StarOffice,
da kann man die Sprache zellenweise einstellen.

Roman Mäder


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html