Extract data from multiple excel files
显示 更早的评论
I am trying to extract data from a specific column from multiple excel files and save this columns in one table
D = 'C:\Users\Desktop\Analyze\';
for k=1:250
file = sprintf('Data_%d.xlsx',k);
filename = strcat('C:\Users\TR8E1MQ\Desktop\Analyze\',file);
x = xlsread(filename);
T = x(:,7);
end
This how I am extracting one column. I want to keep those and keep adding more values from other excel files.
采纳的回答
I would recommend you use fullfile instead of strcat to build paths. This way you don't have to worry about path separators.
Assuming that all files have the number of rows, this is how I'd do it:
source_folder = 'C:\Users\Desktop\Analyze'; %much more meaningful name than D
numfiles = 250;
data = []; %will be preallocated upon reading the first file, once we know the size of a column
for fileidx = 1:numfiles
filedata = readmatrix(fullfile(source_folder, sprintf('Data_%d.xlsx', fileidx)));
if fileidx == 1
data = zeros(size(filedata, 1), numfiles); %preallocate to the height of columns x num files
end
data(:, fileidx) = filedata(:, 7); %copy column 7 into output matrix
end
end
10 个评论
Assumming all the files have the same number of rows?
Yes, since all columns of a matrix must have the same number of rows.
Otherwise, you'd have to pad the shorter rows / crop the longer ones / not use a matrix for storage. Any of these is possible.
What is the other possibility for storage, in case of not using a matrix
A cell array, but be aware that a cell array is more complicated to use.
So, have your files got the same number of rows or not?
No, all of the have different number of rows.
In that case:
source_folder = 'C:\Users\Desktop\Analyze'; %much more meaningful variable name than D
numfiles = 250;
data = cell(1, numfiles); %since all files have different number of rows. Store the desired columns in a cell array
for fileidx = 1:numfiles
filedata = readmatrix(fullfile(source_folder, sprintf('Data_%d.xlsx', fileidx)));
data{fileidx} = filedata(:, 7); %copy desired column in corresponding element of the cell array
end
Is not working.
I received zha follwing error:
Undefined function or variable 'readmatrix'.
filedata = readmatrix(fullfile(source_folder, sprintf('Data_%d.xlsx', fileidx)));
For versions prior to R2019a, replace readmatrix by xlsread. Rest of the code would be the same.
Thanks. You were right. Now, I have different cells and on each of them all of my values of that specific column are saved.
I would like to analyze these cells.
-Plot in a graph all of these values and find max. , min. and average values
How can I do this?
What is the code if I wanna take multiple columns of each excel file in the same way?
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Spreadsheets 的更多信息
产品
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
