Ich möchte eine Exceldatei einlesen, bei der:
- ich die Ausmaße nicht kenne
- ich nicht weiß, welche Spalten Zahlen und welche Strings enthalten
- die dritte Zeile aber der 2.Spalte die Bezeichner der Spalten enthält
Das Ziel ist es, ein Struct zu erhalten, das:
- "für jede" Zeile der Exceltabelle ein Element hat
- "jede" Spalte der Exceltabelle soll ein Feld für jedes Element werden
- die Fieldnames aus der dritten Zeile bekommt.
Beispiel:
Excel-Datei:
-------- header -----------------
---- unw. Zeile ------------------
ID - X - Y - Z
1 - 2 - 'hi' - 3
2 - 4 - 'oh' - 4
%%read in the data from the file specified by the user:
[FileName,PathName] = uigetfile('*.xlsx','Select excel file to load the data from');
if(~strcmp(num2str(FileName),'0') && ~strcmp(num2str(PathName),0))
%% read in data [~,~,raw] = xlsread(strcat(PathName,FileName),'sheet');
paramNames = raw(3,2:end); %hier kriegen wir die Namen der Fields!
data = cutData(raw); %die ersten drei Zeilen und die Identifierspalte werden weggeschnitten
if(~isempty(data)) %the excel sheet was not empty
%transform data into the desired struct
WP = struct(paramNames{1}, data(:,1));
% wie füge ich Fields hinzu, ohne vorher den Namen zu kennen und zu wissen wie viele? else
WP = [];
end end end
Die Frage steht eigentlich schon im Code. Wie kriege ich unter diesen Voraussetzungen mein Struct WP am besten effizient gebaut, ohne die Fieldnames direkt zu kennen und ohne zu wissen wie viele Fields es geben wird (bzw. das steht erst in der Excelfile)? Wie füge ich fields hinzu?
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.