2017-11-11 549 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

當然,我不是運送你準備好的代碼。特別是如果我沒有線索你的桌子的樣子。說真的,你做過一次嘗試,看看你的代碼是怎麼回事?因爲這對我來說似乎是一個明確的嘗試,讓別人無需付出努力就能完成任務。我要在這裏稱之爲主持人干預。 –

相關問題