You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中使用readmatrix读取Excel指定工作表的多列数据

Matlab读取Excel多工作表实现方案

你当前使用的readmatrix('DATA_I.xlsx')默认仅读取Excel文件的第一个工作表,要读取多个工作表可参考以下实现:

基础实现(适用R2019a及以后版本)

第一步:获取所有工作表名称

all_sheets = sheetnames('DATA_I.xlsx');

第二步:批量读取所有工作表

方案1:存储为元胞数组,按索引调用

sheet_count = length(all_sheets);
% 预分配元胞数组存储各工作表数据
Data_mat = cell(sheet_count, 1);

for idx = 1:sheet_count
    % 指定Sheet参数读取对应工作表
    Data_mat{idx} = readmatrix('DATA_I.xlsx', 'Sheet', idx);
end

调用方式:读取第3个工作表数据直接使用Data_mat{3}即可。

方案2:存储为结构体,按工作表名称调用

sheet_count = length(all_sheets);
Data_struct = struct();

for idx = 1:sheet_count
    % 替换工作表名中不符合Matlab结构体命名规则的字符
    valid_sheet_name = matlab.lang.makeValidName(all_sheets{idx});
    Data_struct.(valid_sheet_name) = readmatrix('DATA_I.xlsx', 'Sheet', all_sheets{idx});
end

调用方式:如果原工作表名为2024_销售数据,调用时直接使用Data_struct.x2024_销售数据即可。

常用自定义参数说明

你可以根据需求在readmatrix中补充参数调整读取规则:

  • 跳过前N行表头:添加'NumHeaderLines', N,例如跳过前2行表头写为readmatrix('DATA_I.xlsx', 'Sheet', idx, 'NumHeaderLines', 2)
  • 指定读取单元格范围:添加'Range', '单元格范围',例如仅读取A列到D列的第3行到第200行写为readmatrix('DATA_I.xlsx', 'Sheet', idx, 'Range', 'A3:D200')
  • 读取时忽略空行:添加'RemoveEmptyRows', true

旧版本Matlab兼容方案(R2019a之前版本)

如果你的Matlab版本没有内置readmatrix和sheetnames函数,可以用xlsfinfo和xlsread实现:

[~, all_sheets] = xlsfinfo('DATA_I.xlsx');
sheet_count = length(all_sheets);
Data_mat = cell(sheet_count, 1);

for idx = 1:sheet_count
    [Data_mat{idx}, ~, ~] = xlsread('DATA_I.xlsx', idx);
end

内容的提问来源于stack exchange,提问作者Yaakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:06:01