目录
xlsread函数的功能是读取Microsoft Excel 电子表格文件
语法
num = xlsread(filename)
num = xlsread(filename,sheet)
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
num = xlsread(filename,sheet,xlRange,'basic')
[num,txt,raw] = xlsread(___)
___ = xlsread(filename,-1)
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)
说明
num = xlsread(filename) 读取名为 filename 的 Microsoft® Excel® 电子表格工作表中的第一个工作表,并在一个矩阵中返回数值数据。
num = xlsread(filename,sheet) 读取指定的工作表。
num = xlsread(filename,xlRange) 从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 'A1:C3'。
num = xlsread(filename,sheet,xlRange) 读取指定的工作表和范围。
num = xlsread(filename,sheet,xlRange,'basic') 在 basic 导入模式下读取电子表格中的数据。如果计算机未安装 Windows® 版 Excel 或者您正在使用 MATLAB® Online™,xlsread 会自动在 basic 导入模式下运行,该模式支持 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。
如果不指定所有参数,请使用空字符向量 '' 作为占位符,例如,num = xlsread(filename,'','','basic')。
[num,txt,raw] = xlsread(___) 还使用先前语法中的任何输入参数,在元胞数组 txt 中返回文本字段,在元胞数组 raw 中返回数值数据和文本数据。
___ = xlsread(filename,-1) 打开一个 Excel 窗口以便按交互方式来选择数据。选择工作表,将鼠标拖放到所需范围上,然后点击确定。只有安装了 Microsoft Excel 软件的 Windows 计算机才支持此语法。
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)(其中 processFcn 是函数句柄)读取电子表格,对数据调用 processFcn,并在数组 num 中以数值数据的形式返回最终结果。xlsread 函数在元胞数组 txt 中返回文本字段、在元胞数组 raw 中返回数值和文本数据,并在数组 custom 中返回 processFcn 的第二个输出。xlsread 函数不会更改电子表格中存储的数据。只有安装了 Excel 软件的 Windows 计算机才支持此语法。
示例
将工作表读取到数值矩阵
创建一个名为 myExample.xlsx
的 Excel 文件。
values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);
myExample.xlsx 的 Sheet1 包含:
First Second Third
1 2 3
4 5 x
7 8 9
读取第一个工作表中的数值数据。
filename = 'myExample.xlsx';
A = xlsread(filename)
A =
1 2 3
4 5 NaN
7 8 9
读取元胞的范围
从上一示例的 Excel 文件中读取特定范围的数据。
filename = 'myExample.xlsx';
sheet = 1;
xlRange = 'B2:C3';
subsetA = xlsread(filename,sheet,xlRange)
subsetA =
2 3
5 NaN
读取列
从第一个示例的 Excel 文件中读取第二列。
filename = 'myExample.xlsx';
columnB = xlsread(filename,'B:B')
columnB =
2
5
8
要获得更佳的性能,可在范围中包括行号,例如 'B1:B3'
。
请求数值、文本和原始数据
从第一个示例中的 Excel 文件中请求数值数据、文本数据和合并数据。
[num,txt,raw] = xlsread('myExample.xlsx')
num =
1 2 3
4 5 NaN
7 8 9
txt =
'First' 'Second' 'Third'
'' '' ''
'' '' 'x'
raw =
'First' 'Second' 'Third'
[ 1] [ 2] [ 3]
[ 4] [ 5] 'x'
[ 7] [ 8] [ 9]
对工作表执行函数
在编辑器中,创建一个函数以处理工作表中的数据。在这种情况下,将范围 [0.2,0.8]
之外的值设置为 0.2
或 0.8
。
function [Data] = setMinMax(Data)
minval = 0.2;
maxval = 0.8;
for k = 1:Data.Count
v = Data.Value{k};
if v > maxval
Data.Value{k} = maxval;
elseif v < minval
Data.Value{k} = minval;
end
end
在命令行窗口中,将随机数据添加到 myExample.xlsx
。
A = rand(5);
xlswrite('myExample.xlsx',A,'MyData')
名为 MyData
的工作表包含范围在 0 至 1 之间的值。
读取工作表中的数据,并重置范围 [0.2,0.8]
之外的任何值。指定工作表名称,但使用 ''
作为 xlRange
和 'basic'
输入的占位符。
trim = xlsread('myExample.xlsx','MyData','','',@setMinMax);
请求自定义输出
对工作表执行函数并显示自定义索引输出。
在编辑器中,修改上一示例中的函数 setMinMax
以返回更改后的元素(自定义输出)的索引。
function [Data,indices] = setMinMax(Data)
minval = 0.2;
maxval = 0.8;
indices = [];
for k = 1:Data.Count
v = Data.Value{k};
if v > maxval
Data.Value{k} = maxval;
indices = [indices k];
elseif v < minval
Data.Value{k} = minval;
indices = [indices k];
end
end
读取工作表 MyData
中的数据,并请求自定义索引输出idx。
[trim,txt,raw,idx] = xlsread('myExample.xlsx',...
'MyData','','',@setMinMax);
局限性
-
xlsread 仅读取 7 位 ASCII 字符。
-
xlsread 不支持非相邻范围。
-
如果计算机未安装 Windows 版 Excel 或者您正在使用 MATLAB Online,xlsread 会自动在 basic 导入模式下运行。
-
在 Linux® 和 Mac 平台上,xlsread 不能打开使用 writetable 函数编写的电子表格文件。