Matlab读取Excel文件全攻略:从基础到进阶,轻松搞定数据导入!

嘿,各位技术小伙伴们!今天咱们来聊聊Matlab里最常用的操作之一——读取Excel文件。作为一个经常用Matlab做数据分析的人,我敢说90%的人都遇到过读取Excel时的各种小麻烦:要么找不到文件,要么数据读出来是NaN,要么混合数据处理不了……别急,这篇文章就把我踩过的坑和总结的干货全分享给你,保证你看完就能轻松搞定!

一、基础操作:xlsread函数入门

首先,咱们从最经典的xlsread函数说起。这个函数可以说是Matlab读取Excel的“敲门砖”,用法超简单,但细节很多哦!

1. 基本语法

最常用的格式是:

[num, txt, raw] = xlsread('你的Excel文件名.xlsx');

这里有三个返回值,分别是:

  • num:纯数值矩阵,所有文本单元格会变成NaN
  • txt:纯文本单元格,数值会变成空字符串
  • raw:原始数据,保留Excel里的所有内容(混合数据)

举个例子,如果你有一个叫“data.xlsx”的文件,直接写:

[num, txt, raw] = xlsread('data.xlsx');

就能把数据读进来啦!是不是很方便?

2. 读取指定Sheet

如果你的Excel文件有多个Sheet,想读第二个Sheet怎么办?加个参数就行:

[num, txt, raw] = xlsread('data.xlsx', 2); % 读第2个Sheet

或者直接写Sheet的名字:

[num, txt, raw] = xlsread('data.xlsx', 'Sheet2');

这个小技巧超实用,尤其是处理多Sheet文件的时候!

3. 读取指定范围

有时候你不需要整个Excel的数据,只想读某几行某几列,比如A1到C10的区域。这时候可以这样写:

[num, txt, raw] = xlsread('data.xlsx', 'Sheet1', 'A1:C10');

这样就能精准读取你想要的范围了,效率瞬间提升!

4. 超级重要的注意点!!!

这里必须强调两个容易踩坑的地方:

  • 文件路径问题:很多新手直接写文件名,但如果文件不在Matlab当前工作目录里,就会报错“找不到文件”。解决方法要么把文件移到工作目录,要么写绝对路径(比如"C:\Users\XXX\Desktop\data.xlsx")。
  • 关闭Excel文件:读取的时候一定要确保Excel文件是关闭的!否则Matlab会提示“文件被占用”,根本读不了。我第一次遇到这个问题时,还以为是Matlab出问题了,后来才发现是自己忘了关Excel……

二、常见问题解决:这些坑我都踩过!

光会基础操作还不够,实际用的时候你肯定会遇到各种问题。下面这几个场景,我敢说你一定碰到过,快来看看怎么解决!

1. 混合数据处理:xlsread不管用?用readtable!

如果你Excel里既有数值又有文本(比如第一列是姓名,第二列是成绩),用xlsread读出来的num矩阵里,姓名那列全是NaN,这可咋整?别慌,Matlab从R2013b开始推出了readtable函数,专门处理这种混合数据!

用法超简单:

T = readtable('data.xlsx');

返回的T是一个表格类型,你可以直接用列名来访问数据,比如T.Name就是姓名列,T.Score就是成绩列。是不是比xlsread方便多了?而且它还能自动识别表头,省去了很多麻烦!

2. Excel版本问题:.xls和.xlsx有区别吗?

有的小伙伴可能会问:我用的是旧版本的Excel(.xls格式),Matlab能读吗?答案是肯定的!xlsread和readtable都支持.xls和.xlsx格式,但要注意:如果你用的是非常老的Matlab版本(比如R2007之前),可能需要安装额外的组件。不过现在大家用的都是新版本,基本不用担心这个问题。

3. 合并单元格怎么处理?

Excel里的合并单元格是个“大坑”!用xlsread读取时,合并单元格只会保留第一个单元格的内容,其他都是NaN。这时候怎么办呢?我的建议是:要么在Excel里先取消合并单元格再读,要么读进来后手动处理NaN值。比如用fillmissing函数填充缺失值,或者用逻辑索引筛选有效数据。

三、进阶技巧:批量读取与高效处理

学会了基础和问题解决,咱们再提升一下——批量读取多个Excel文件,或者处理大数据量的文件,这些技巧能帮你节省超多时间!

1. 批量读取多个Excel文件

如果你有一个文件夹里有100个Excel文件,总不能一个个读吧?这时候dir函数就派上用场了!步骤如下:

  1. 用dir获取文件夹里所有Excel文件的列表;
  2. 循环遍历每个文件,用readtable或xlsread读取;
  3. 把数据存到一个单元格数组里,方便后续处理。

举个例子:

% 获取当前文件夹下所有.xlsx文件
files = dir('*.xlsx');
% 创建一个单元格数组存储数据
data_cell = cell(length(files), 1);
% 循环读取每个文件
for i = 1:length(files)
    filename = files(i).name;
    data_cell{i} = readtable(filename);
    disp(['已读取第', num2str(i), '个文件:', filename]);
end

这样一来,不管有多少个文件,一键就能全部读完,是不是超高效?

2. 大数据量处理:readmatrix和readcell

如果你的Excel文件特别大(比如几十万行数据),用xlsread可能会很慢,甚至内存不够。这时候推荐用readmatrix和readcell函数:

  • readmatrix:适合纯数值的大数据文件,速度比xlsread快很多;
  • readcell:适合混合数据的大数据文件,每个单元格作为一个元素存储。

用法和readtable类似:

% 读取纯数值文件
M = readmatrix('big_data.xlsx');
% 读取混合数据文件
C = readcell('mixed_data.xlsx');

亲测有效!处理10万行数据时,readmatrix比xlsread快了至少3倍,简直是救星!

3. 读取指定Sheet的小技巧

除了前面说的用索引或名称,readtable还支持更灵活的参数设置。比如你想读Sheet2的A1到D20区域,可以这样写:

T = readtable('data.xlsx', 'Sheet', 2, 'Range', 'A1:D20');

参数名+参数值的格式,是不是更直观?记不住参数名的话,直接打doc readtable看帮助文档就行,里面写得超详细!

四、总结与个人经验分享

写到这里,Matlab读取Excel的核心技巧基本都覆盖了。最后再总结一下我的个人经验:

  • 新手入门用xlsread,简单易懂;
  • 处理混合数据用readtable,表格类型超方便;
  • 批量或大数据用dir+readmatrix/readcell,效率翻倍;
  • 遇到问题先看帮助文档(doc 函数名),Matlab的文档写得真的很详细!

最后再提醒一句:读取Excel文件时,一定要确保文件路径正确、文件是关闭的,这两个细节能帮你避免80%的错误!

好了,今天的分享就到这里。希望这篇文章能帮你解决Matlab读取Excel的问题,如果你有其他疑问,欢迎在评论区留言(虽然我看不到,但你可以自己查文档哦)。祝大家学习愉快,数据处理顺利!

posted @ 2026-01-24 18:24  itmanager  阅读(49)  评论(0)    收藏  举报