MATLAB批量读取文件夹内所有子文件夹的Excel数
时间: 2025-02-28 08:33:22 浏览: 75
### MATLAB 批量读取文件夹及其子文件夹中的 Excel 数据
为了实现批量读取文件夹及其子文件夹中的所有 Excel 文件,在MATLAB中可以编写一个自定义函数来遍历目录并读取每个Excel文件的内容。下面是一个具体的实现方式:
#### 函数 `batch_read_excel` 实现
该函数接收两个参数:根目录路径以及要匹配的文件扩展名(例如'.xlsx'),并将所有找到的数据存储在一个元胞数组里返回。
```matlab
function [data_cells] = batch_read_excel(root_dir, ext)
% 初始化用于保存数据的元胞数组
data_cells = {};
% 获取当前工作区状态,准备恢复原状
originalDir = cd;
try
% 遍历给定目录下的所有文件和子文件夹
files = dir(fullfile(root_dir, '**', ['*' ext]));
for i = 1:length(files)
fullFileName = fullfile(files(i).folder, files(i).name);
% 使用xlsread逐个读取Excel文件内容
[~, ~, raw_data] = xlsread(fullFileName);
% 将读取到的数据追加至结果集中
data_cells{end+1} = raw_data; %#ok<AGROW>
end
catch ME
warning(['Error reading ' root_dir ': ', ME.message]);
finally
% 返回原始的工作空间位置
cd(originalDir);
end
end
```
上述代码片段展示了如何创建一个名为`batch_read_excel` 的函数[^3],它能够递归访问指定路径下所有的`.xlsx` 或其他类型的电子表格文件,并利用内置命令`xlsread()` 来解析这些文件的内容。注意这里使用了通配符 `'**'` 和星号模式来确保能获取深层次嵌套结构内的目标文件。
#### 调用示例
假设有一个包含多个层次级联子文件夹的项目文件夹位于 `"C:\my_project"` 中,则可以通过如下调用来执行批处理操作:
```matlab
% 定义源文件夹路径及感兴趣的文件类型
source_folder = "C:\my_project";
file_extension = ".xlsx";
% 开始批量读取过程
all_excel_contents = batch_read_excel(source_folder, file_extension);
% 显示前几条记录作为验证
disp(all_excel_contents(1:min(length(all_excel_contents),5)));
```
这段脚本首先指定了待扫描的目标文件夹名称与期望检索出来的特定格式(`.xlsx`);接着调用了之前定义好的辅助函数完成实际的任务;最后打印部分样本输出以便确认程序运行无误。
阅读全文
相关推荐

















