How to export several xlsx files in Matlab
1 次查看(过去 30 天)
显示 更早的评论
Hi @ all,
I am struggling with my last part of the script- the export of the data. My script import several csv files, then i do some calculation and in the end I want to export this csv files with the same filename as a xlsx file. But I can't find a way to export more than one file. Maybe somebody of you has an idea. I added my test file to import.
My code (most of it is for calculation):
directory_name=uigetdir('','Ordner mit Messungen auswählen'); %Öffnet die Ordnerauswahl am PC
[nur_file_name,pfad]=uigetfile({'*.csv','csv-files (*.csv)';'*.*','all Files'},'Die csv-Files der Proben oeffnen (probe_001.csv=',[directory_name '/'], 'Multiselect', 'on'); %uigetfile öffnet die DateienAuswahl bei der mehrere ausgewählt werden können
nur_file_name=cellstr(nur_file_name); %cellstr konvertiert die Zellen in cell arrays. In diesem array entspricht das erste Element dem letzten eingelesenen File. Deshalb muss nun sortiert werden
nur_file_name=sort(nur_file_name);
filename=strcat(pfad,nur_file_name); %Strcat speichert strings horizontal
anzahl_files=size(filename,2); %Anzahl der eingelesenen files
for xy=1:anzahl_files
[fid_in,m]=fopen(char(filename(xy)),'r'); %Filenames werden aus Matrix gelesen
if fid_in==-1 %zeige Fehlermeldung, danach nochmal probieren
error ('Datei nicht gefunden!',m)
end
%--------------------------Import data------------------------------------
clear element_RL
clear intens_RL
Tabelle_element_RL=importfileSPE(filename{xy},[1,Inf]); %liest Elementnamen ein
element_RL=Tabelle_element_RL{1,:};
[anzahl_zeile,anzahl_elemente]=size(element_RL); %gibt Grösse von element_RL wieder
clearvars Tabelle_element_RL
Tabelle_intens_RL=importfileSPI(filename{xy},[2,Inf]); %liest Intensitäten ein
intens_RL=Tabelle_intens_RL{:,:};
[anzahl_runs,anzahl_elemente]=size(intens_RL);
clearvars Tabelle_intens_RL
%---------------Mittelwert und Standardabweichung berechnen----------------
for k=1:anzahl_elemente
Background(k)=mean(intens_RL(:,k)); %Berechnet den Mittelwert der Spalten
Sigma(k)=std(intens_RL(:,k)); %Berechnet die Standardabweichung der Spalten
end
%-----------------------Ausreisser-Definition------------------------------
SP_limit=Background+(4*Sigma); %Hier legen wir das Limit der Ausreisser fest, Faktor vor Sigma kann verändert werden
%-----------------Ausreisser suchen und ersetzen (1/0)---------------------
is_SP = intens_RL > SP_limit;
intens_RL(is_SP)=1; %ersetzt Ausreisser durch 1
intens_RL(~is_SP)=0; %ersetzt alle anderen Werte durch 0
%------------Ausreisser (1) suchen und ersetzen (Elementname)--------------
intens_RL_str=string(intens_RL);
for n=1:anzahl_elemente %ersetzt die Ausreisser durch Elementnamen
intens_RL_str(intens_RL_str(:,n)=="1",n)=element_RL(:,n);
end
%-------------------Nullen löschen und mit x ersetzen----------------------
r = intens_RL_str=="0"; %ersetzt die Null durch x
intens_RL_str(r)="x";
intens_RL_str=regexprep(intens_RL_str,'\[',''); %die Befehle sollen die Klammer und das plus entfernen
intens_RL_str=regexprep(intens_RL_str,'\]','');
intens_RL_str=regexprep(intens_RL_str,'\+','');
intens_RL_str=sortrows(intens_RL_str,'ascend'); %sortiert die Werte absteigend
intens_RL_str(:,all(intens_RL_str == "x"))=[]; %löscht Spalten mit nur 0
intens_RL_str=intens_RL_str.'; %Transponiert, damit Spalten gelöscht werden mit nur Nullen
intens_RL_str(:,all(intens_RL_str == "x"))=[];
intens_RL_str=intens_RL_str.';
intens_RL_final=sort(intens_RL_str,2);
intens_RL_final(:,all(intens_RL_final == "x"))=[];
%-----------------------Export of the data------------------------------
for p=1:anzahl_files
[nur_file_name_out]=uiputfile('*xlsx','Single Particles save as',nur_file_name(:,p))
1 个评论
Ive J
2022-2-22
I cannot follow your script, but based on what you explained, it seems to me you have a problem like this:
csvfiles = ["file1.csv", "file2.csv"]; % a set of csv files to be read into MATLAB
for i = 1:numel(csvfiles)
thisfile = readtable(csvfiles(i)); % read each file into matlab in form of table
% do whatever on thisfile
% write it to an Excel file
writetable(thisfile, replace(csvfiles(i), ".csv", ".xslx"))
end
回答(1 个)
Prince Kumar
2022-3-29
Hi,
Please refer to the following answers, these might help :
- https://www.mathworks.com/matlabcentral/answers/344767-exporting-multiple-excel-files
- https://www.mathworks.com/matlabcentral/answers/434479-trying-to-get-matlab-to-export-multiple-files-on-to-different-sheets
Hope this helps!!
1 个评论
Ive J
2022-3-29
xlswrite is deprecated.
xlswrite is not recommended. Use writetable, writematrix, or writecell instead. For more information, see Compatibility Considerations.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Use COM Objects in MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!