Verfasst am: 02.01.2012, 23:35
Titel: xlsfinfo findet ein 'Excelsheet' zu viel
Hallo liebe goMatlab user!
Ich arbeite gerade an einem kleinen Programm, das Daten aus einer Exceldatei auslesen und abspeichern soll. Die Exceldateien haben dabei eine bestimmte Anzahl an 'sheets'. Der 'user' soll aussuchen können welche sheets er bearbeiten will. Deshalb will ich vorher anzeigen wieviel sheets vorhanden sind.
Ich verwende die Matlabfunktion xlsfinfo um die Anzahl der 'sheets' zu bestimmen. Komischerweise findet xlsfinfo 6 sheets, obwohl meine Exceldatei nur 5 sheets hat. Wenn ich mit xlsread sheet nummer 6 in Matlab auslese wird folgender Text ausgegeben:
Erklärung des codes:
mit uigetfile wird eine beliebige Exceldatei vom user ausgewählt.
xlsfinfo soll ein array der sheets erzeugen, dessen Länge mit length() ausgelesen wird.
Dann kann der User das sheet auswählen und der Inhalt wird eingelesen.
ich kann mir beim besten Willen nicht vorstellen, dass MATLAB in einer Excel-Datei Sheets findet, die nicht da sind, und sich auch noch einen Inhalt dafür ausdenkt.
Das Problem wird also an anderer Stelle liegen. Ich würde vorschlagen:
1. sicher gehen, dass in MATLAB und Excel auch wirklich die gleiche Datei verwendet wird (und dass diese gespeichert ist)
2. absolut sicher gehen, dass es dieses Sheet in der Excel-Datei nicht gibt - vielleicht musst du nur scrollen.
Ein paar sheets wurden von jemand anderem, der mir die Exceldateien gegeben hat 'versteckt', deshalb hab ich sie nicht gesehen.
mit dem Befehl: formats --> hide&unhide --> unhide sheet...
kann man versteckte sheets wieder einblenden.
Die Tatsache, dass auch solche Sheets vorhanden sein können, die keine Information beinhalten, lässt mir aber einen programmiertechnischen Schauer über den Rücken laufen...
Hat vielleicht jemand eine Idee, wie ich effizient herausfinden kann ob es sich um ein Sheet mit Informationen zum Verarbeiten handelt oder um ein sheet, wie oben gepostet, die keinen Informationsgehalt zum Weiterverarbeiten haben?
zunächst ist die Frage, wann ein Sheet "Informationen zum Weiterverarbeiten" enthält - das musst du erstmal selbst entscheiden.
Du kannst aber z.B. mit ISEMPTY testen, ob ein eingelesenes Sheet numerische Daten enthält.
Vor allem wirst du das mit MATLAB aber nicht entscheiden können, ohne das Sheet einzulesen (es sei denn, du weißt, wie es heißt).
Grüße,
Harald
Einstellungen und Berechtigungen
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.