WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mehrere Exel Dateien einlesen, Code anwenden und abspeichern

 

PHEV
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2015, 15:42     Titel: Mehrere Exel Dateien einlesen, Code anwenden und abspeichern
  Antworten mit Zitat      
Hallo,

ich habe ein m-file geschrieben, welches aus einer Exel Datei Daten einließt, dann Berechnungen ausführt und dann daraus in eine Exel datei werte abspeichert.

Ziel ist hier aus z.b. 20 Datein, jeweils 3 berechnete Größen in eine Exel Datei zu speichern und zwar so dass jeweils für die nächste Messung die drei neuen werte eine Spalter weiter gespeichert werden.

Aktuell mache ich dies manuell was sehr viel Zeit in anspruch nimmt.

Ich muss sowohl die einzulesende datei ändern, als auch die Spalten, in die geschrieben wird.

Alle Exel Dateein habe immer die gleichen namen der Variabeln!

Also in Kurz:

Ordner mit excel datein 1-10

Read File 1
Write in excel file A column 2

Read File 2
Write in excel file A column 3

...

Der Code sieht in etwa so aus was das einlesen und schreiben betrifft:


Code:
[code]%% Import the data
[~, ~, raw0_0] = xlsread('C:\........xlsx','B:B');
[~, ~, raw0_1] = xlsread('C:\.......xlsx','I:J');
[~, ~, raw0_2] = xlsread('C:.......xlsx','AC:AC');
[~, ~, raw0_3] = xlsread('C:\.......xlsx','AN:AN');
raw = [raw0_0,raw0_1,raw0_2,raw0_3];
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};

%% Replace non-numeric cells with NaN
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells
raw(R) = {NaN}; % Replace non-numeric cells


%% Create output variable
data = reshape([raw{:}],size(raw));

%% Allocate imported array to column variable names
Offset = data(:,1);
VacuumSupplyPressure1HSBa = data(:,2);
VacuumSupplyPressure2HSBa = data(:,3);
FixtureTemp1C = data(:,4);
BarometricPressure = data(:,5);

%% Clear temporary variables
clearvars data raw raw0_0 raw0_1 raw0_2 raw0_3 R;

%Delets all NaN
 FixtureTemp1C(isnan(FixtureTemp1C)) = [];
 BarometricPressure(isnan(BarometricPressure)) = [];
 Offset(isnan(Offset))=[];
 VacuumSupplyPressure2HSBa(isnan(VacuumSupplyPressure2HSBa))=[];
 VacuumSupplyPressure1HSBa(isnan(VacuumSupplyPressure1HSBa))=[];
 
%% Write Excel File:
%filename = 'testdata.xlsx'
%xlswrite(filename,xtTime_2_Referenz_point_500mbar,'Referenz Time 2','A2')

headers = {'Referenz Time 1' 'Referenz Time 2' 'Referenz Time 3' 'Vacuum_after_6seconds' 'Vacuum_after_12seconds' 'Total vacuum after 50s' 'Barometric Pressure' 'Oil Temperature'};
data = [xtTime_2_Referenz_point_500mbar xtTime_2_Referenz_point_700mbar xtTime_2_Referenz_point_930mbar Vacuum_after_6seconds Vacuum_after_12seconds TotalVacuum_after_50seconds BarometricPressure Temp_Oil];
xlswrite('Performancecurve_results_001.xls',headers);
xlswrite('Performancecurve_results_001.xls',data,'A31:H31'); % for multiple measurements in one file adjust A(N+1):H(N+1)


[/code]



Vielen Dank fuer Eure Hilfe!!
Private Nachricht senden Benutzer-Profile anzeigen


PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2015, 16:14     Titel:
  Antworten mit Zitat      
Ich habe auch schon das hier gefunden

Code:
source_dir = 'path/to/source/'
dest_dir = '/path/to/dest'
source_files = dir(fullfile(source_dir, '*.xls'));
for i = 1:length(source_files)
  data = xlsread(fullfile(source_dir, source_files(i).name)));
  #do something with data
  xlswrite(fullfile(dest_dir, source_files(i).name)));
end


ich weiß aber nicht, wie ich das auf mein Beispiel anpassen kann

Code:

source_dir = 'C:\Users\.......\2Convert\'
dest_dir = 'C:\Users\.........\2Convert\'
source_files = dir(fullfile(source_dir, '*.xlsx'));
for i = 1:length(source_files)
   
[~, ~, raw0_0] = xlsread('B:B'(source_dir, source_files(i).name)));
[~, ~, raw0_1] = xlsread('I:J'(source_dir, source_files(i).name)));
[~, ~, raw0_2] = xlsread('AC:AC'(source_dir, source_files(i).name)));
[~, ~, raw0_3] = xlsread('AN:AN'(source_dir, source_files(i).name)));
 
  xlswrite(fullfile(dest_dir, source_files(i).name)));



headers = {'Referenz Time 1' 'Referenz Time 2' 'Referenz Time 3' 'Vacuum_after_6seconds' 'Vacuum_after_12seconds' 'Total vacuum after 50s' 'Barometric Pressure' 'Oil Temperature'};
data = [xtTime_2_Referenz_point_500mbar xtTime_2_Referenz_point_700mbar xtTime_2_Referenz_point_930mbar Vacuum_after_6seconds Vacuum_after_12seconds TotalVacuum_after_50seconds BarometricPressure Temp_Oil];
xlswrite('(dest_dir, source_files(i).name)',headers);
xlswrite('(dest_dir, source_files(i).name)',data,'A31:H31'); % for multiple measurements in one file adjust A(N+1):H(N+1)
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.10.2015, 19:45     Titel: Re: Mehrere Exel Dateien einlesen, Code anwenden und abspeic
  Antworten mit Zitat      
Hallo PHEV,

Was genau ist Deine Frage? Wir können wir Dir helfen?
Macht der Code, was er soll?

Zitat:
Ziel ist hier aus z.b. 20 Datein, jeweils 3 berechnete Größen in eine Exel Datei zu speichern und zwar so dass jeweils für die nächste Messung die drei neuen werte eine Spalter weiter gespeichert werden.

Das verstehe ich noch nicht.

Zitat:
Alle Exel Dateein habe immer die gleichen namen der Variabeln!

Haben Excel-Dateien Variablen-Namen?

Der gepostete Code aus der zweiten Nachricht sollte Fehlermeldungen erzeugen. Bitte poste sie. Z.B.:
Code:
xlswrite('(dest_dir, source_files(i).name)',headers);
% Besser - falls das gemeint ist:
xlswrite(fullfile(dest_dir, source_files(i).name), headers);
 


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
PHEV
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 10.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2015, 20:39     Titel:
  Antworten mit Zitat      
Hallo Jan!

Ich habe Alles soweit fertig! Bei mir klappt bisher nur nicht, dass ich den Pfad von xlswrite nicht in meinem Code definieren kann.

Während es mit deinem Befehl klappt. Geht es mit meinem ähnlichen nicht...

Code:

xlswrite('(dest_dir, source_files(i).name)',headers);


der geht...hat aber dann drei dateien...

Code:
for i = 1:length(source_files)
   
range1 = sprintf('A%i', i+1);

   
headers = {'Referenz Time 1' 'Referenz Time 2' 'Referenz Time 3' 'Vacuum_after_6seconds' 'Vacuum_after_12seconds' 'Total vacuum after 50s' 'Barometric Pressure' 'Oil Temperature'};
data = [xtTime_2_Referenz_point_500mbar xtTime_2_Referenz_point_700mbar xtTime_2_Referenz_point_930mbar Vacuum_after_6seconds Vacuum_after_12seconds TotalVacuum_after_50seconds BarometricPressure Temp_Oil];
xlswrite('(dest_dir,source_files)',headers);
xlswrite('(dest_dir,source_files)',data,'tabelle1',range1); % for multiple measurements in one file adjust A(N+1):H(N+1)


   
end


der geht nur ohne die pfad angabe. Dann ist die Datei aber nicht so schön da wo sie hin soll (kleinigkeit)


Kannst du mal über meinen Code gucken?

Das hier importiert die Dateein. Funktioniert. Aber oft es es ja so, wenn man nicht penibel den Pfad angibt, dass es dann in einer anderen Ordnerstrucktur nicht mehr geht.

Ich hätte gerne bei xlsread auch den Pfad mit drin!


Code:
source_dir = 'C:\.......2Convert\'
dest_dir = 'C:\Users\.......Data2write'
source_files = dir(fullfile(source_dir, '*.xlsx'));
for i = 1:length(source_files)
   
    %% Import the data
[~, ~, raw0_0] = xlsread(source_files(i).name,'B:B');
[~, ~, raw0_1] = xlsread(source_files(i).name,'I:J');
[~, ~, raw0_2] = xlsread(source_files(i).name,'AC:AC');
[~, ~, raw0_3] = xlsread(source_files(i).name,'AN:AN');
raw = [raw0_0,raw0_1,raw0_2,raw0_3];
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};

raw = [raw0_0,raw0_1,raw0_2,raw0_3];
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};




Der Export in Exel geht wie mit dem Code oben!



Klappt schon recht gut!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.10.2015, 23:51     Titel:
  Antworten mit Zitat      
Hallo PHEV,

Zitat:
Während es mit deinem Befehl klappt. Geht es mit meinem ähnlichen nicht...
Code:
xlswrite('(dest_dir, source_files(i).name)',headers);

Nun, der ist zwar schon irgendwie ähnlich, aber bedeutet etwas total anderes: Du erzeugst ein Excel-File mit dem Namen '(dest_dir, source_files(i).name)' . Das ist nämlich ein String, also ein CHAR Vektor.

Dies ist etwas anderes:
Code:
xlswrite(fullfile(dest_dir, source_files(i).name),headers);

Hier werden die Inhalte der Variablen "dest_dir" und "source_files(i).name" verwendet.

Zitat:
der geht...hat aber dann drei dateien...

Das verstehe ich nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.