Error in merging multiple CSV files into single file
1 view (last 30 days)
Show older comments
Kasih Ditaningtyas Sari Pratiwi
on 27 Oct 2017
Edited: Kasih Ditaningtyas Sari Pratiwi
on 12 Nov 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 Comments
Accepted Answer
Image Analyst
on 29 Oct 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 Comments
Image Analyst
on 11 Nov 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
on 11 Nov 2017
Edited: Kasih Ditaningtyas Sari Pratiwi
on 12 Nov 2017
More Answers (1)
Walter Roberson
on 27 Oct 2017
Change
d=fullfile(myDir,'*.csv'); % retrieve the files
to
d = dir(fullfile(myDir,'*.csv')); % retrieve the files
See Also
Categories
Find more on Spreadsheets in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!