Error in merging multiple CSV files into single file
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Kasih Ditaningtyas Sari Pratiwi
el 27 de Oct. de 2017
Editada: Kasih Ditaningtyas Sari Pratiwi
el 12 de Nov. de 2017
Hi! I need help regarding merging multiple CSV files into single file. At the first time, I managed to run this code :
%%Merge multiple CSV files into one CSV file
myDir = uigetdir % gets directory from any folder
d=dir(fullfile(myDir,'*.csv')); % retrieve the files
fido=fopen(fullfile('finalCSVnew.csv'),'w'); % open output file to write
for i=1:length(d)
fidi=fopen(fullfile(myDir,d(i).name)); % open input file
fwrite(fido,fread(fidi,'*char')); % copy to output
fclose(fidi); % close that input file
end
fido=fclose(fido); clear fid* d % close output file, remove temporaries
Turns out I have to change the command for "myDir" so it can select multiple file in one folder, not all file in one folder which need to be processed. So I change the code above to:
%%Merge multiple CSV files into one CSV file
myDir = uigetfile('*.csv','Select the data file','MultiSelect','on'); % gets directory from any folder
d=fullfile(myDir,'*.csv'); % retrieve the files
fido=fopen(fullfile('finalCSVnew.csv'),'w'); % open output file to write
for i=1:length(d)
fidi=fopen(fullfile(myDir,d(i).name)); % open input file
fwrite(fido,fread(fidi,'*char')); % copy to output
fclose(fidi); % close that input file
end
fido=fclose(fido); clear fid* d % close output file, remove temporaries
and there is an error message "Struct contents reference from a non-struct array object." Could you please help me to solve the problem? Thank you very much.
0 comentarios
Respuesta aceptada
Image Analyst
el 29 de Oct. de 2017
See my code:
% Merge multiple CSV files into one CSV file
[filenames, folder] = uigetfile('*.csv','Select the data file','MultiSelect','on') % gets directory from any folder
% Create output file name in the same folder.
outputFileName = fullfile(folder, 'finalCSVnew.csv')
fidOutput = fopen(outputFileName, 'wt'); % open output file to write
for k = 1 : length(filenames)
% Get this file name.
thisFileName = fullfile(folder, filenames{k})
% Open input file:
fidInput = fopen(thisFileName);
% Read text from it
thisText = fread(fidInput, '*char');
% Copy to output file:
fwrite(fidOutput, thisText);
fclose(fidInput); % close the input file
end
fclose(fidOutput);
% Open Windows Explorer to this folder
winopen(folder);
4 comentarios
Image Analyst
el 11 de Nov. de 2017
Yeah, of course that won't work. Excel workbooks are not text files and so you can't use 'wt' in fopen() and expect to get sensible stuff. You're going to have to use xlsread() or readtable() to read the workbooks into variables, then write them out to a workbook, either to the same worksheet, or each workbook to new sheets in the output workbook. It could get a little complicated if the input workbooks have multiple sheets or charts in them.
Kasih Ditaningtyas Sari Pratiwi
el 11 de Nov. de 2017
Editada: Kasih Ditaningtyas Sari Pratiwi
el 12 de Nov. de 2017
Más respuestas (1)
Walter Roberson
el 27 de Oct. de 2017
Change
d=fullfile(myDir,'*.csv'); % retrieve the files
to
d = dir(fullfile(myDir,'*.csv')); % retrieve the files
Ver también
Categorías
Más información sobre Spreadsheets en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!