Verfasst am: 12.06.2014, 16:51
Titel: Bearbeiten von Excel Dateien
Hallo liebes Forum,
ich habe eine Frage zu Excel Dateien. Ich verfolge gerade ein Uniprojekt bei dem Messwerttabellen im Excelformat aufgenommen werden. Die Verarbeitung der Daten ist mir bereits gelungen, allerdings stehe ich jetzt vor einem neuen Problem.
Die Dateien sollen nach der Visualisierung noch archiviert werden, dafür wollte ich ebenfalls Matlab nutzen. Genauer gesagt möchte ich mit Matlab den Dateinamen ändern nach einem bestimmten Schema. Das heißt ich möchte von Matlab nach den Eingaben gefragt werden.
Z.B:
Soll der Dateiname geändert werden? Antwort: Nein
Dann soll das Programm beendet werden.
Soll der Dateiname geändert werden? Antwort: Ja
Dann soll beispielhaft folgende Abfragroutine laufen.
(Schön wäre es ebenfalls wenn die folgenden Informationen im Header der Tabelle gespeichert werden)
Welche Hunderasse wurde untersucht? Antwort: Schäferhund
Wie alt war der Hund? Antwort: 8
War der Hund männlich oder Weiblich? Antwort: weiblich
Dann soll der Dateiname lauten: Schäferhund_8_weiblich
Unter diesem Dateinamen soll die Messwerttabelle dann abgespeichert werden.
Ich hoffe ich konnte mein Problem gut darstellen und würde mich über Hilfe dabei sehr freuen.
change_file=input('Soll der Dateiname geändert werden? ','s');
ifstrcmp(change_file, 'Ja')
dog=input('Welche Hunderasse wurde untersucht? ','s');
age=input('Wie alt war der Hund? ','s');
gender=input('War der Hund männlich oder Weiblich? ','s');
newfilename=[dog '_' age '_' gender '.xlsx'];
xlswrite(newfilename, deineMatrix) end
ich hatte bereits gefragt wie es funktioniert den Dateinamen zu ändern, das hat alles wunderbar geklappt. Jetzt wollte ich noch diesen Dateinamen als Header in die Tabelle einfügen und wollte es folgendermaßen lösen:
Code:
change_file = input('Soll der Dateiname geändert werden? j/n ','s');
ifstrcmp(change_file, 'j')
dog = input('Welche Hunderasse wurde untersucht? ','s');
age = input('Wie alt war der Hund? ','s');
gender = input('War der Hund männlich oder Weiblich? ','s');
newfilename = [dog '_' age '_' gender '.xlsx'];
header = [dog '_' age '_' gender];
xlswrite(newfilename, [header; data]);
end
Gibt er mir die Tabelle als leere ungefüllte Tabelle aus, obwohl da Daten darinstehen.
Ich würde hier mal meinen kompletten Code posten evtl. Habe ich irgendwo einen grundlegenden Fehler gemacht bei der ganzen Sache, da ich momentan nicht mehr richtig weiterkomme. Ein weiteres Problem besteht auch bei den Kanälen a,b,c,d da ich in meiner Tabelle einen Header habe, den ich natürlich nicht mitlesen will und erst ab Zeile 4 in Spalte 2 bis zu Ende lesen möchte z.B. in kanal a. Die dazugehörige Messwerttabelle habe ich angehängt.
change_file = input('Soll der Dateiname geändert werden? j/n ','s');
ifstrcmp(change_file, 'j')
dog = input('Welche Hunderasse wurde untersucht? ','s');
age = input('Wie alt war der Hund? ','s');
gender = input('War der Hund männlich oder Weiblich? ','s');
newfilename = [dog '_' age '_' gender '.xlsx'];
header = [dog '_' age '_' gender];
xlswrite(newfilename, [header; data]);
end
ah das hat mir schon sehr weitergeholfen, es war etwas viel Matlab in letzter Zeit, da sieht man nicht mehr alles von alleine
Also data sind die Dateien die ich aus einer *.txt bekomme und dann in die Tabelle schreibe. Da sind sowohl Text als auch Zahlen dabei z.B. Informationen zum Messverstärker und eben auch die Messwerte, das ist data und das wird dann in die Tabelle Change.xlsx geschrieben.
Und über diese ganzen Inforamtionen wollte ich gerne noch einen Header setzen. Dieser soll genau wie der Dateiname aus den vorherigen Fragen bestehen.
Desweiteren sollen dann die Daten geplottet werden, da möchte ich aber nur die Messwerte wählen (Kanäle a,b,c,d im Code). Deshalb will ich beim wählen der Länge der Tabelle und der Messwerte den Header ignorieren.
Dank erstmal für die Antwort habe das Problem lösen können.
Doch jetzt ist noch ein anderes Problem aufgetaucht. Matlab kann mit Kommazahlen nicht umgehen. Aus der *.txt Datei habe ich Kommazahlen in eine *.xlsx Datei geschrieben.
Meine Fragen sind jetzt:
-Sollte ich das in der txt Datei ändern ? (Problem ist dann wenn ich es mit der Funktion comma2point ändere, dann schreibt er in meine neue *.xlsx Tabelle völlig andere Potenzen und nicht diese, die in dem Originalfile stehen)
-Oder kann ich die Kommas durch Punkte in der *.xlsx Datei ändern?
Das ist im nachfolgenden Code zu sehen:
Code:
%% *.txt Datei in *.xls umwandeln
change_format = input('Soll das Dateiformat geändert werden? j/n: ','s');
change_file = input('Soll der Dateiname geändert werden? j/n: ','s');
ifstrcmp(change_file, 'j')
dog = input('Welche Hunderasse wurde untersucht? ','s');
age = input('Wie alt war der Hund? ','s');
gender = input('War der Hund männlich oder Weiblich? ','s');
newfilename = [dog '_' age '_' gender '.xlsx'];
xlswrite(newfilename, data);
delete('change.xlsx') end end
ich würde die Kommata nach dem Einlesen verarbeiten. Also in jeder Zelle von data (cellfun)
1. Komma durch Punkte ersetzen und dann
2. schauen, ob sich das mit str2double in eine sinnvolle Zahl umwandeln lässt.
um das Problem noch etwas besser darzustellen. Nach dem Einlesen der Textdatei hab ich folgende angehängte *.xls Datei.
Hier sieht man, das viele Messwerte sehr klein sind mit dem Exponent -5 angeziegt werden und diese will ich auch dahin überführen, aber weder Excel noch Matlab machen es richtig und überführen die Zahlen mit der völlig falschen Zehnerpotenz.
Wie kann ich das lösen ? Ich bin etwas Ideenlos! Vielleicht ist mein Ansatz im vorigen Post schon falsch und jemand kann mir hier helfen. Die daten schreibe ich aus der *.txt Datei aus dem vorigen Post in eine Excel-Tabelle, das Eregbnis ist dann die hier angehängte Datei. Dabei entstehen die angesprochenen Probleme.
zum ändern von Kommas in Punkte verwende. Der obige Code ist eher ein verzweifelter Versuch und aus der doc werd ich auch nicht so wirklich schlau. Vielleicht könntest du mir dabei helfen?
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.