2017-11-11 550 views
0

我是一个matlab中的新手,并陷入这个问题。我尝试使用matlab代码从多个excel文件创建一个新文件。它设法生成新文件。然而,该文件是一团糟,我真的不知道该怎么做。这里是代码:如何使用matlab将多个excel文件导入到一个excel文件中?

% Merge multiple XLS files into one XLS file 
[filenames, folder] = uigetfile('*.xls','Select the data file','MultiSelect','on'); % gets directory from any folder 
% Create output file name in the same folder. 
outputFileName = fullfile(folder, 'rainfall.xls'); 
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); 

我得到的图片显示如何混乱的结果数据是。你可以帮我吗?非常感谢你。 error

+0

同样的问题一遍又一遍,没有努力让事情工作。只需查看OP的配置文件活动即可。 –

回答

0

使用xlsread(或可读表,如果您有最新版本的Matlab)而不是fread。希望这可以帮助。

0
[files,folder] = uigetfile('*.xls','Select Files','MultiSelect','on'); 
output = fullfile(folder,'rainfall.xls'); 

c = cell(0,5); 

for i = 1:numel(files) 
    c_curr = table2cell(readtable(fullfile(folder,files{i}),'ReadVariableNames',false)); 
    c = [c; c_curr]; 
end 

tab = cell2table(c,'VariableNames',{'MyVar1' 'MyVar2' 'MyVar3' 'MyVar4' 'MyVar5'}); 

writetable(tab,output); 

当然,每个文件必须包含相同数量的列,并且每个列在所有文件中必须具有相同的基础数据类型。

+0

我不知道你的文件是怎么样的,所以很难说。无论如何,你需要做的就是将你读的表合并到for循环中的一个表中。然后,在脚本结尾处将可写的调用移到循环外部,然后对其进行更改,以使其以合并结果为目标。 –

+0

谢谢您的回复,Tommaso。我尝试了上面的代码,但出现错误“使用cell2table出错(第57行) VariableNames属性必须包含表中每个变量的一个名称。” –

+0

当然,我不是运送你准备好的代码。特别是如果我没有线索你的桌子的样子。说真的,你做过一次尝试,看看你的代码是怎么回事?因为这对我来说似乎是一个明确的尝试,让别人无需付出努力就能完成任务。我要在这里称之为主持人干预。 –

相关问题