xlsread
目录
'basic' — 请求在 basic 模式下读取的标记字符向量 | 字符串
custom — 对应于 processFcn 的函数的第二个输出由函数定义
(不推荐)读取 Microsoft Excel 电子表格文件
不推荐使用 xlsread
。请改用 readtable、readmatrix 或 readcell。有关详细信息,请参阅兼容性注意事项。
语法
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
num = xlsread(filename,sheet,xlRange,'basic')
[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);
输入参数
全部折叠
filename
— 文件名
字符向量 | 字符串
文件名,指定为字符向量或字符串。如果未包括扩展名,xlsread
将搜索具有指定的名称和支持的 Excel 扩展名的文件。xlsread
可以读取当前在 Windows 版 Excel 中打开的文件中保存的数据。
示例: 'myFile.xlsx'
或 "myFile.xlsx"
数据类型: char
| string
sheet
— 工作表
字符向量 | 字符串 | 正整数
工作表,指定为下列值之一:
-
包含工作表名称的字符向量或字符串。名称不能包含冒号 (
:
)。要确定电子表格文件中工作表的名称,请使用xlsfinfo
。对于basic
模式的 XLS 文件,sheet
区分大小写。 -
指示工作表索引的正整数。对于
basic
模式下的 XLS 文件,不支持此选项。
数据类型: char
| string
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
xlRange
— 矩形范围
字符向量 | 字符串
矩形范围,指定为字符向量或字符串。
使用两个对角指定 xlRange
,这两个对角用来定义要读取的区域。例如,'D2:H4'
表示工作表上两个角落 D2
和 H4
之间的 3×5 矩形区域。xlRange
输入不区分大小写,并使用 Excel A1 引用样式(请参阅 Excel 帮助)。
读取 basic
模式下的 XLS 文件时不支持范围选择。在这种情况下,请使用 ''
代替 xlRange
。
如果未指定 sheet,则 xlRange
必须包括两个角落和一个冒号字符,甚至对于单个单元格(例如 'D2:D2'
)也是如此。否则,xlsread
会将输入解释为工作表名称(例如 'sales'
或 'D2'
)。
如果指定了 sheet
,则 xlRange
:
-
无需包括冒号和对角即可描述单个单元格。
-
可以引用在 Excel 文件中定义的命名范围(请参阅 Excel 帮助)。
当指定的 xlRange
与合并的单元格重叠时:
-
在安装了 Excel 的 Windows 计算机上,
xlsread
将展开该范围以包括所有合并的单元格。 -
在未安装 Windows 版 Excel 的计算机上,
xlsread
仅返回指定范围中的数据,且合并单元格的值为空或NaN
。
数据类型: char
| string
'basic'
— 请求在 basic
模式下读取的标记
字符向量 | 字符串
请求在 basic
模式下进行读取的标志,指定为字符向量或字符串 'basic'
。
basic
模式是不带 Excel(适用于 Windows)的计算机的默认设置。在 basic
模式下,xlsread
:
-
仅读取 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。
-
读取 XLS 文件时不支持
xlRange
输入。在这种情况下,请使用''
代替xlRange
。 -
不支持函数句柄输入。
-
将所有日期导入为 Excel 日期序列值。Excel 日期序列值使用不同于 MATLAB 日期数字的参考日期。
数据类型: char
| string
processFcn
— 自定义函数的句柄
函数句柄
自定义函数的句柄。仅安装了 Excel 软件的 Windows 计算机上才支持此参数。xlsread
读取电子表格,对数据副本执行您的函数,并返回最终结果。xlsread
不会更改电子表格中存储的数据。
当 xlsread
调用自定义函数时,它将传递 Excel 应用程序的一个范围接口以提供对数据的访问权限。自定义函数必须包括此接口作为输入和输出参数。(请参阅对工作表执行函数)
示例: @myFunction
输出参数
全部折叠
num
— 数值数据
矩阵
数值数据,返回为 double
值的矩阵。该数组不包含标题行中的任何信息,也不包含外部行或列(包含非数值数据)中的任何信息。内部电子表格行和列中的文本数据在 num
输出中显示为 NaN
。
txt
— 文本数据
元胞数组
文本数据,返回为元胞数组。内部电子表格行和列中的数值在 txt
中显示为空字符向量 ''
。
对于 basic
导入模式下的 XLS 文件,txt
输出包含空字符向量 ''
,代替位于电子表格中文本数据前面的数值数据的前导列。在所有其他情况下,txt
不包含这些额外的列。
未定义的值(例如 '#N/A'
)在 txt
输出中显示为 '#N/A'
,basic
模式下的 XLS 文件除外。
raw
— 数值数据和文本数据
元胞数组
工作表中的数值数据和文本数据,以元胞数组的形式返回。
在安装了 Windows 版 Excel 的计算机上,未定义的值(例如 '#N/A'
)在 raw
输出中显示为 'ActiveX VT_ERROR:'
。对于其他计算机上或 MATLAB Online 中的 XLSX、XLSM、XLTX 和 XLTM 文件,未定义的值显示为 '#N/A'
。
custom
— 对应于 processFcn
的函数的第二个输出
由函数定义
对应于 processFcn
的函数的第二个输出。custom
的值和数据类型由该函数确定。
局限性
-
xlsread
仅读取 7 位 ASCII 字符。 -
xlsread
不支持非相邻范围。 -
如果您的计算机未安装 Windows 版 Excel 或者您正在使用 MATLAB Online,
xlsread
会自动在basic
导入模式下运行。 -
在 Linux® 和 Mac 平台上,
xlsread
不能打开使用 writetable 函数编写的电子表格文件。
算法
-
xlsread
导入表示日期的格式化文本(例如'10/31/96'
),但在basic
模式下导入时除外。
版本历史记录
在 R2006a 之前推出
全部折叠
R2019a: 不推荐使用 xlsread
不推荐使用 xlsread
。请改用 readtable、readmatrix 或 readcell。目前没有删除 xlsread
的计划。
从 R2019a 开始,请分别使用 readtable
、readmatrix
或 readcell
将电子表格数据作为表、矩阵或元胞数组导入。与 xlsread
函数相比,readtable
、readmatrix
和 readcell
函数具有以下优势:
-
更好的跨平台支持和性能
-
自动检测数据格式和类型
-
能够使用导入选项来控制数据导入过程,包括错误和缺失数据的处理
下表显示了 xlsread
的典型用法,以及如何更新代码以改用 readtable
、readmatrix
或 readcell
。
不推荐 | 推荐 |
---|---|
使用 M = xlsread(filename) | 将电子表格数据作为表读取: T = readtable(filename)但是,要继续将数据作为矩阵读取,请使用: M = readmatrix(filename) |
使用 [~,~,C] = xlsread(filename) | 将电子表格数据作为表导入: T = readtable(filename)但是,要继续将数据作为元胞数组导入,请使用: C = readcell(filename) |
使用 M = xlsread(filename,sheet,range) | 将特定工作表和范围作为表读取: T = readtable(filename,'Sheet',sheet,'Range',range)但是,要继续将数据作为矩阵读取,请使用: M = readmatrix(filename,'Sheet',sheet,'Range',range) |
使用 [~,~,C] = xlsread(filename,sheet,range) | 将特定工作表和范围作为表读取: T = readtable(filename,'Sheet',sheet,'Range',range)但是,要继续将数据作为元胞数组读取: C = readcell(filename,'Sheet',sheet,'Range',range) |