我想在 Matlab 中運行下面的代碼,其中十個 excel 檔案將它們垂直合并到一個 excel 檔案中。我的問題是如何將它們垂直合并到兩個不同的檔案中?
path = 'G:';
S = dir(fullfile(path, '*', 'data.xls'))
for k = 1:numel(S)
F = fullfile(S(k).folder,S(k).name);
data = readtable(F);
d = strcat(table2array((data(:,1))), {' '}, table2array((data(:,2 ))));
out = [d data(:,3)]; % date / time / acceleration
out = renamevars(out,'Var1','Date & Time');
writetable(out,'file.xls',"Sheet",k)
end
uj5u.com熱心網友回復:
在我看來,您沒有正確檢查您的檔案夾。我用于pwd當前檔案夾,我的 matlab 代碼在那里運行。我還創建了兩個檔案夾folder1,folder2依此類推excel.xlsx。
您需要添加一個 if 陳述句來獲取第一個檔案并填寫初始檔案dataN以連接所有內容。
然后你可以使用類似于
然后你需要忽略結構中的兩個第一個檔案夾名稱,分別是.和..
所以代碼看起來像這樣:
path = pwd;
S = dir(path);
isdir = [S.isdir];
n_files = 5;
for k = 3:numel(S)
if isdir(k)
if k < (3 n_files)
disp(num2str(k))
if k == 3
F = fullfile([path '\' S(k).name '\excel.xlsx']);
data2 = xlsread(F);
else
F = fullfile([path '\' S(k).name '\excel.xlsx'])
data = xlsread(F);
data2 = [data2;data];
end
else
if k == (3 n_files)
F = fullfile([path '\' S(k).name '\excel.xlsx']);
data3 = xlsread(F);
else
F = fullfile([path '\' S(k).name '\excel.xlsx']);
data = xlsread(F);
data3 = [data3;data];
end
end
else
;
end
end
xlswrite('file3.xlsx', data2); % Create file 3
xlswrite('file4.xlsx', data3); % Create file 3
編輯:我誤讀了這個問題,沒有看到你想要前 5 個。然后你可以簡單地添加一個 if 陳述句。我正在為此更新代碼。然后,您可以更改n_files以適合您想要的檔案數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526591.html
標籤:擅长matlab合并
上一篇:重寫一個函式
