Merge all '.xlsx' files in a folder

I have multiple '.xlsx' files in a folder, and I want to merge them all.
my input and out folder paths are below:
sourcefolder = 'D:\OutputFolder';
destinationfolder = 'D:\mergeddata';
But I dont know how to merge them. Kindly someone help me. Sincerely,

 Accepted Answer

I notice that the input files have three sheets, with two of them empty. I decided that it was potentially important to merge each sheet separately, by name; otherwise the code would be much shorter.
Note: the code will fail to distinguish between sheetnames which are greater than 63 characters long (or, in some cases, even shorter.)
sourcefolder = 'D:\OutputFolder';
destinationfolder = 'D:\mergeddata';
dinfo = dir( fullfile(sourcefolder, '*.xlsx') );
numfile = length(dinfo);
input_data = struct([]);
input_sheets = struct([]);
for K = 1 : numfile
thisfile = fullfile(sourcefolder, dinfo(K).name );
[status, sheets] = xlsfinfo(thisfile);
for sn = 1 : length(sheets)
[~, ~, raw] = xlsread(thisfile, sn);
sheetname = sheets{sn};
sheet_var = genvarname(sheetname);
if ~isfield(input_data, sheet_var)
input_data.(sheet_var) = {};
input_sheets.(sheet_var) = sheetname;
end
input_data.(sheet_var) = [input_data.(sheet_var); raw]
end
end
output_file = fullfile( destinationfolder, 'merged_files.xlsx');
sheet_vars = fieldnames(input_sheets);
for sn = 1 : length(sheet_vars)
sheet_var = sheet_vars{sn};
data_to_write = input_data.(sheet_var);
sheetname = input_sheets.(sheet_var);
xlswrite( output_file, data_to_write, sheetname );
end

5 Comments

Sir,
This code gives me an error as below: ??? A dot name structure assignment is illegal when the structure is empty. Use a subscript on the structure.
Kindly help,
Replace
input_data = struct([]);
input_sheets = struct([]);
with
input_data = struct();
input_sheets = struct();
Walter Roberson sir, I also need to medge .xls file in a folder, i used the above program it is medging data in row wise, but i need to medge all those excel files data column wise i.e, side by side... How to get it? Please help me regarding this..
xlswrite( output_file, data_to_write.', sheetname );
This is not i want to do so sir... i have attached the intput files and output file for your kind reference.. Please help me to get such format output file using the given inputs...

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!