spreadsheetImportOptions
电子表格的导入选项对象
说明
SpreadsheetImportOptions
对象允许您指定 MATLAB® 如何从电子表格文件中导入表格数据。此对象包含的属性可以控制数据导入过程,包括如何处理错误和缺失的数据。
创建对象
您可以使用 detectImportOptions
函数或 spreadsheetImportOptions
函数(下文介绍)创建 SpreadsheetImportOptions
对象:
使用
detectImportOptions
根据filename
中指定的电子表格内容检测并填充导入属性。opts = detectImportOptions(filename);
使用
spreadsheetImportOptions
根据导入要求定义导入属性。
语法
描述
输入参数
numVars
— 变量的数目
正整数标量
变量的数目,指定为正整数标量。
属性
变量属性
VariableNames
— 变量名称
字符向量元胞数组 | 字符串数组
变量名称,指定为字符向量元胞数组或字符串数组。VariableNames
属性包含导入变量时要使用的名称。
如果数据中包含 N
个变量,但未指定变量名称,VariableNames
属性中将包含 {'Var1','Var2',...,'VarN'}
。
要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule
的值设置为 'preserve'
。
示例: opts.VariableNames
返回当前(检测到的)变量名称。
示例: opts.VariableNames(3) = {'Height'}
将第三个变量的名称更改为 Height
。
数据类型: char
| string
| cell
VariableNamingRule
— 保留变量名称的标志
"modify"
(默认) | "preserve"
保留变量名称的标志,指定为 "modify"
或 "preserve"
。
"modify"
- 将无效变量名称(由isvarname
函数确定)转换为有效的 MATLAB 标识符。"preserve"
- 保留作为无效 MATLAB 标识符的变量名称,如包含空白和非 ASCII 字符的变量名称。
从 R2019b 开始,变量名称和行名称可以包含任何字符,包括空格和非 ASCII 字符。此外,它们可以由任何字符(而不仅仅是字母)开头。变量名称和行名称可以不是有效的 MATLAB 标识符(由 isvarname
函数决定)。要保留这些变量名称和行名称,请将 VariableNamingRule
的值设置为 "preserve"
。当 VariableNamingRule
的值从 "modify"
更改为 "preserve"
时,变量名称不会刷新。
数据类型: char
| string
VariableTypes
— 变量的数据类型
字符向量元胞数组 | 字符串数组
变量的数据类型,指定为字符向量元胞数组,或包含一组有效数据类型名称的字符串数组。VariableTypes
属性指定导入变量时要使用的数据类型。
要更新 VariableTypes
属性,请使用 setvartype
函数。
示例: opts.VariableTypes
返回当前变量数据类型。
示例: opts = setvartype(opts,'Height',{'double'})
将变量 Height
的数据类型更改为 double
。
SelectedVariableNames
— 要导入的变量子集
字符向量 | 字符串标量 | 字符向量元胞数组 | 字符串数组 | 数值索引数组
要导入的变量子集,指定为字符向量、字符串标量、字符向量元胞数组、字符串数组或数值索引数组。
SelectedVariableNames
必须是 VariableNames
属性中包含的名称的子集。默认情况下,SelectedVariableNames
包含 VariableNames
属性中的所有变量名称,也就是说将导入所有变量。
可以使用 SelectedVariableNames
属性只导入相关变量。使用 SelectedVariableNames
属性指定变量子集,然后使用 readtable
只导入该子集。
要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule
的值设置为 'preserve'
。
示例: opts.SelectedVariableNames = {'Height','LastName'}
只为导入操作选择两个变量,即 Height
和 LastName
。
示例: opts.SelectedVariableNames = [1 5]
只为导入操作选择两个变量,即第一个变量和第五个变量。
示例: T = readtable(filename,opts)
返回一个表,其中只包含在 opts
对象的 SelectedVariableNames
属性中指定的变量。
数据类型: uint16
| uint32
| uint64
| char
| string
| cell
VariableOptions
— 类型特定的变量导入选项
由变量导入选项对象组成的数组
类型特定的变量导入选项,以变量导入选项对象数组形式返回。此数组为 VariableNames
属性中指定的每个变量包含一个对应的对象。数组中的每个对象均包含一些属性,支持导入特定数据类型的数据。
变量选项支持以下数据类型:数值、文本、logical
、datetime
或 categorical
。
要查询变量的当前(或检测到的)选项,请使用 getvaropts
函数。
要为变量设置和自定义选项,请使用 setvaropts
函数。
示例: opts.VariableOptions
返回 VariableImportOptions
对象的集合,每个对象对应于数据中的一个变量。
示例: getvaropts(opts,'Height')
返回 Height
变量的 VariableImportOptions
对象。
示例: opts = setvaropts(opts,'Height','FillValue',0)
将变量 Height
的 FillValue
属性设置为 0
。
位置属性
Sheet
— 要从中读取数据的工作表
''
空字符数组 (默认) | 字符向量 | 字符串标量 | 正整数标量
要从中读取数据的工作表,指定为空字符数组、包含工作表名称的字符向量或字符串标量,或表示工作表索引的正整数标量。根据为 Sheet
属性指定的值,导入函数的行为如下表中所述。
指定的值 | 行为 |
---|---|
'' (默认值) | 从第一个工作表导入数据。 |
名称 | 从具有匹配名称的工作表中导入数据,不考虑电子表格文件中工作表的顺序。 |
整数 | 从由整数指定的位置的工作表导入数据,不考虑电子表格文件中的工作表名称。 |
数据类型: char
| string
| single
| double
DataRange
— 数据的位置
字符向量 | 字符串标量 | 正整数标量 | 正整数标量数组 | 字符向量元胞数组 | 字符串数组
要导入的数据的位置,指定为字符向量、字符串标量、字符向量元胞数组、字符串数组、正整数标量或由正整数标量组成的 N
×2
数组。使用以下形式之一指定 DataRange
。
值 | 行为 |
---|---|
起始单元格或起始行 | 使用 Excel® 根据起始单元格,导入函数通过从起始单元格开始导入,并在到达最后一个空行或页脚范围时结束,从而自动检测数据范围。 也可以使用正标量行索引指定包含数据的第一行。 根据指定的行索引,导入函数通过从指定的第一行开始读取,一直到数据的最后或页脚范围,从而自动检测数据范围。 例如: |
矩形范围 | 使用矩形范围格式指定确切范围,其中 导入函数只读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失单元导入。 列数必须与 示例: |
行范围或列范围 | 通过使用 Excel 行号标识起始行和结束行来指定范围。 根据指定的行范围,导入函数通过从第一个非空列开始读取,一直到数据的最后,从而自动检测列范围,并为每一列创建一个变量。 示例: 也可以通过使用 Excel 列字母或列号标识起始列和结束列来指定范围。 根据指定的列范围,导入函数通过从第一个非空行开始读取,一直到数据的最后或页脚范围,从而自动检测行范围。 指定范围内的列数必须与 示例: |
多个行范围 | 使用包含 包含多个行范围的有效数组必须满足以下条件:
示例: |
未指定或为空 | 不获取任何数据。 示例: |
数据类型: char
| string
| cell
| single
| double
RowNamesRange
— 行名称的位置
字符向量 | 字符串标量 | 正整数标量 | ''
空字符数组
行名称的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 RowNamesRange
指定为下表中的值之一。
值 | 行为 |
---|---|
| 使用 Excel 导入函数为数据中的每个变量标识一个名称。 示例: |
矩形范围 | 使用矩形范围格式指定确切范围,其中
示例: |
行范围 | 通过使用 Excel 行号标识起始行和结束行来指定范围。 行名称必须在单独一列中。 示例: |
数字索引 | 使用正标量列索引指定包含行名称的列。 示例: |
未指定或为空 | 指示没有行名称。 示例: |
数据类型: char
| single
| double
VariableNamesRange
— 变量名称的位置
字符向量 | 字符串标量 | 正整数标量 | ''
空字符数组
变量名称的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableNamesRange
指定为下表中的值之一。
值 | 行为 |
---|---|
| 使用 Excel 导入函数为数据中的每个变量读取一个名称。 示例: |
矩形范围 | 使用矩形范围格式指定确切范围,其中 列数必须与 示例: |
行范围 | 通过使用 Excel 行号标识起始行和结束行来指定范围。 必须为一行。 示例: |
数字索引 | 使用正标量行索引指定包含变量名称的行。 示例: |
未指定或为空 | 指示没有变量名称。 示例: |
数据类型: char
| single
| double
VariableDescriptionsRange
— 变量描述的位置
字符向量 | 字符串标量 | ''
空字符数组
变量描述的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableDescriptionRange
指定为下表中的值之一。
值 | 行为 |
---|---|
| 使用 Excel 导入函数为数据中的每个变量读取一个描述。 示例: |
矩形范围 | 使用矩形范围格式指定确切范围,其中 列数必须与 示例: |
行范围 | 通过使用 Excel 行号标识起始行和结束行来指定范围。 必须为一行。 示例: |
数字索引 | 使用正标量行索引指定包含描述的行。 示例: |
未指定或为空 | 指示没有变量描述。 示例: |
数据类型: char
| string
| single
| double
VariableUnitsRange
— 变量单位的位置
字符向量 | 字符串标量 | 正整数标量 | ''
空字符数组
变量单位的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableUnitsRange
指定为下表中的值之一。
值 | 行为 |
---|---|
| 使用 Excel 导入函数为数据中的每个变量读取一个单位。 示例: |
矩形范围 | 使用矩形范围格式指定确切范围,其中 列数必须与 示例: |
行范围 | 通过使用 Excel 行号标识起始行和结束行来指定范围。 必须为一行。 示例: |
数字索引 | 使用正标量行索引指定包含数据单位的行。 示例: |
未指定或为空 | 指示没有变量单位。 示例: |
数据类型: char
| string
| single
| double
替代规则
MissingRule
— 管理缺失数据的过程
'fill'
(默认) | 'error'
| 'omitrow'
| 'omitvar'
管理缺失数据的过程,指定为下表中的值之一。
缺失规则 | 行为 |
---|---|
'fill' | 用
|
'error' | 停止导入并显示一条错误消息,指出缺失的记录和字段。 |
'omitrow' | 忽略包含缺失数据的行。 |
'omitvar' | 忽略包含缺失数据的变量。 |
示例: opts.MissingRule = 'omitrow';
数据类型: char
| string
ImportErrorRule
— 处理导入错误的过程
'fill'
(默认) | 'error'
| 'omitrow'
| 'omitvar'
处理导入错误的过程,指定为下表中的值之一。
导入错误规则 | 行为 |
---|---|
'fill' | 用
|
'error' | 停止导入并显示一条错误消息,指出导致出错的记录和字段。 |
'omitrow' | 忽略发生错误的行。 |
'omitvar' | 忽略发生错误的变量。 |
示例: opts.ImportErrorRule = 'omitvar';
数据类型: char
| string
对象函数
getvaropts | 获取变量导入选项 |
setvaropts | 设置变量导入选项 |
setvartype | 设置变量数据类型 |
preview | 使用导入选项预览文件中的八行数据 |
示例
在电子表格文件中定义变量的导入选项
创建一个导入选项对象,以从 patients.xls
文件中读取一个变量。
初始化 SpreadsheetImportOptions
对象,指定变量名称、变量类型和数据起始单元格。然后,将 preview
函数与导入选项对象结合使用以预览数据。
opts = spreadsheetImportOptions; opts.VariableNames = 'LastName'; opts.VariableTypes = 'categorical'; opts.DataRange = 'A2'; preview('patients.xls',opts)
ans=8×1 table
LastName
________
Smith
Johnson
Williams
Jones
Brown
Davis
Miller
Wilson
从文件中导入变量。
oneVar = readtable('patients.xls',opts); whos oneVar
Name Size Bytes Class Attributes oneVar 100x1 12709 table
在电子表格文件中定义多个变量的导入选项
创建一个导入选项对象,以从 patients.xls
读取多个变量。
根据文件的内容,定义变量的数目、变量名称、变量类型和数据起始位置。
numVars = 7; varNames = {'LastName','Gender','Age','Location','Height','Weight','Smoker'} ; varTypes = {'char','categorical','int32','char','double','double','logical'} ; dataStartLoc = 'A2';
使用 spreadsheetImportOptions
函数和变量信息初始化导入选项对象 opts
。
opts = spreadsheetImportOptions('NumVariables',numVars,... 'VariableNames',varNames,... 'VariableTypes',varTypes,... 'DataRange', dataStartLoc);
结合使用 preview
函数和导入选项来预览数据。
preview('patients.xls',opts)
ans=8×7 table
LastName Gender Age Location Height Weight Smoker
____________ ______ ___ _____________________________ ______ ______ ______
{'Smith' } Male 38 {'County General Hospital' } 71 176 true
{'Johnson' } Male 43 {'VA Hospital' } 69 163 false
{'Williams'} Female 38 {'St. Mary's Medical Center'} 64 131 false
{'Jones' } Female 40 {'VA Hospital' } 67 133 false
{'Brown' } Female 49 {'County General Hospital' } 64 119 false
{'Davis' } Female 46 {'St. Mary's Medical Center'} 68 142 false
{'Miller' } Female 33 {'VA Hospital' } 64 142 true
{'Wilson' } Male 40 {'VA Hospital' } 68 180 false
使用 readtable
导入数据。
T = readtable('patients.xls',opts); whos T
Name Size Bytes Class Attributes T 100x7 30563 table
提示
引入时间:
R2016b -
SpreadsheetImportOptions
对象R2018b -
spreadsheetImportOptions
函数
另请参阅
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)