Merge all '.xlsx' files in a folder
2 次查看(过去 30 天)
显示 更早的评论
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,
0 个评论
采纳的回答
Walter Roberson
2016-2-26
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 个评论
Chakradhar Rao Tandule
2018-6-16
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...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!