Hallo mrstrom,
wer hat sich bloß dieses Format ausgedacht...
Zitat:eine Kommentarzeile die mit # abgeschlossen wird und in der zweiten Zeile die Namen der Parameter die mit * abgeschlossen wird. Weiterhin wird jede Messung mit ? abgeschlossen. Die einzelnen Parameter in einer Messung werden durch ; voneinander getrennt.
Ausschnitt der Text-Datei:
Zitat:17.11.2010 15:25
#
Anzahl Spektren; v_block[V]; v_inject[V]; v_drift[V]; v_aperture[V]; Injection Time; Numeric; Numeric 2; Numeric 3; Spektrum*
54795,000000; -2,024690; 249,973020; 2027,981440; 0,731300; 100,000000; 0,000000; 0,000000; 0,000000; 1,197910' 1,575700' 1,249882' 1,147089' 1,122492' 1,147639' 1,091119' 0,232609' 1,186198' 1,162226'
Format mal aufgedröselt:
- erste Zeile mit Datum + Uhrzeit
- zweite Zeile mit einem #
- dritte Zeile mit Kanalnamen, beendet mit einem *
- vierte Zeile: zuerst die Werte zu den Kanalnamen, jeweils durch ein ";" abgetrennt, danach (ohne Zeilenende dazwischen!) die Spektrumswerte, diesmal getrennt mit einem Hochkomma (! Wieso das denn?)
- ganz am Ende: wieder ein ";", ein "?", ein ";" mittendrin noch ein Zeilenende...
Und noch besser: zusätzlich zu den Trennzeichen noch jede Menge Leerzeichen (statt einfach ein Tab dazwischen zu setzen)
Also Lösung:
-Datei lesen
- am # splitten, Datum+Uhrzeit auswerten
- am * splitten, Kanalnamen auswerten (falls nötig, anscheinend sind die ja feststehend, da du schon einen Cluster vorbereitet hast)
- Werte entsprechend Kanalnamen lesen, (z.B. mit einer FOR-Schleife), die Werte mit BundleByName in den vorbereiteten Cluster eintragen
- am nächsten ";" splitten (dies wäre das nach den Spektrumswerte), per SpreadsheetstringToArray mit Trennzeichen "'" (Hochkomma) in ein Array of DBL umwandeln, in Cluster eintragen
Fertig!
So sieht das aus (ohne das BundleByName und einige kleinere Auswertungen
):
Laden deiner Datei in unter 1s...
Zitat:Wenn es keine andere Möglichkeit gibt könnte ich zur Not das Format der Datei ändern ( aber nur wenn es unbedingt sein muss.
Mein Vorschlag:
- Sinnvoller Einsatz von Zeilenendezeichen
- statt mehrerer Leerzeichen nur ein Tab zwischen den Werten, Verzicht auf ";" und Hochkomma (da ja schon das Tab als Trennzeichen vorhanden und ausreichend ist)
- wenn Spektrumswerte eindimensional sind, dann alle Werte untereinander oder zumindest auf maximal 16 Werte pro Zeile begrenzt (dann meckert Excel nicht beim Einlesen deiner Textdatei!), Anzahl der Werte steht ja schon im Header