Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

spreadsheetImportOptions

电子表格的导入选项对象

说明

SpreadsheetImportOptions 对象允许您指定 MATLAB® 如何从电子表格文件中导入表格数据。此对象包含的属性可以控制数据导入过程,包括如何处理错误和缺失的数据。

创建对象

您可以使用 detectImportOptions 函数或 spreadsheetImportOptions 函数(下文介绍)创建 SpreadsheetImportOptions 对象:

  • 使用 detectImportOptions 根据 filename 中指定的电子表格内容检测并填充导入属性。

    opts = detectImportOptions(filename);

  • 使用 spreadsheetImportOptions 根据导入要求定义导入属性。

描述

示例

opts = spreadsheetImportOptions 使用一个变量创建 SpreadsheetImportOptions 对象。

示例

opts = spreadsheetImportOptions('NumVariables',numVars) 使用 numVars 中指定的变量数目创建该对象。

示例

opts = spreadsheetImportOptions(___,Name,Value) 使用一个或多个名称-值对组参数指定 SpreadsheetImportOptions 对象的其他属性

输入参数

全部展开

变量的数目,指定为正整数标量。

属性

全部展开

变量属性

变量名称,指定为字符向量元胞数组或字符串数组。VariableNames 属性包含导入变量时要使用的名称。

如果数据中包含 N 个变量,但未指定变量名称,VariableNames 属性中将包含 {'Var1','Var2',...,'VarN'}

要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule 的值设置为 'preserve'

示例: opts.VariableNames 返回当前(检测到的)变量名称。

示例: opts.VariableNames(3) = {'Height'} 将第三个变量的名称更改为 Height

数据类型: char | string | cell

保留变量名称的标志,指定为 "modify""preserve"

  • "modify" - 将无效变量名称(由 isvarname 函数确定)转换为有效的 MATLAB 标识符。

  • "preserve" - 保留作为无效 MATLAB 标识符的变量名称,如包含空白和非 ASCII 字符的变量名称。

从 R2019b 开始,变量名称和行名称可以包含任何字符,包括空格和非 ASCII 字符。此外,它们可以由任何字符(而不仅仅是字母)开头。变量名称和行名称可以不是有效的 MATLAB 标识符(由 isvarname 函数决定)。要保留这些变量名称和行名称,请将 VariableNamingRule 的值设置为 "preserve"。当 VariableNamingRule 的值从 "modify" 更改为 "preserve" 时,变量名称不会刷新。

数据类型: char | string

变量的数据类型,指定为字符向量元胞数组,或包含一组有效数据类型名称的字符串数组。VariableTypes 属性指定导入变量时要使用的数据类型。

要更新 VariableTypes 属性,请使用 setvartype 函数。

示例: opts.VariableTypes 返回当前变量数据类型。

示例: opts = setvartype(opts,'Height',{'double'}) 将变量 Height 的数据类型更改为 double

要导入的变量子集,指定为字符向量、字符串标量、字符向量元胞数组、字符串数组或数值索引数组。

SelectedVariableNames 必须是 VariableNames 属性中包含的名称的子集。默认情况下,SelectedVariableNames 包含 VariableNames 属性中的所有变量名称,也就是说将导入所有变量。

可以使用 SelectedVariableNames 属性只导入相关变量。使用 SelectedVariableNames 属性指定变量子集,然后使用 readtable 只导入该子集。

要支持无效的 MATLAB 标识符作为变量名称,例如包含空白和非 ASCII 字符的变量名称,请将 VariableNamingRule 的值设置为 'preserve'

示例: opts.SelectedVariableNames = {'Height','LastName'} 只为导入操作选择两个变量,即 HeightLastName

示例: opts.SelectedVariableNames = [1 5] 只为导入操作选择两个变量,即第一个变量和第五个变量。

示例: T = readtable(filename,opts) 返回一个表,其中只包含在 opts 对象的 SelectedVariableNames 属性中指定的变量。

数据类型: uint16 | uint32 | uint64 | char | string | cell

类型特定的变量导入选项,以变量导入选项对象数组形式返回。此数组为 VariableNames 属性中指定的每个变量包含一个对应的对象。数组中的每个对象均包含一些属性,支持导入特定数据类型的数据。

变量选项支持以下数据类型:数值、文本、logicaldatetimecategorical

要查询变量的当前(或检测到的)选项,请使用 getvaropts 函数。

要为变量设置和自定义选项,请使用 setvaropts 函数。

示例: opts.VariableOptions 返回 VariableImportOptions 对象的集合,每个对象对应于数据中的一个变量。

示例: getvaropts(opts,'Height') 返回 Height 变量的 VariableImportOptions 对象。

示例: opts = setvaropts(opts,'Height','FillValue',0) 将变量 HeightFillValue 属性设置为 0

位置属性

要从中读取数据的工作表,指定为空字符数组、包含工作表名称的字符向量或字符串标量,或表示工作表索引的正整数标量。根据为 Sheet 属性指定的值,导入函数的行为如下表中所述。

指定的值行为
''(默认值)从第一个工作表导入数据。
名称从具有匹配名称的工作表中导入数据,不考虑电子表格文件中工作表的顺序。
整数从由整数指定的位置的工作表导入数据,不考虑电子表格文件中的工作表名称。

数据类型: char | string | single | double

要导入的数据的位置,指定为字符向量、字符串标量、字符向量元胞数组、字符串数组、正整数标量或由正整数标量组成的 N×2 数组。使用以下形式之一指定 DataRange

行为

'Cell'n

起始单元格或起始行

使用 Excel® A1 表示法指定数据的起始单元。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

根据起始单元格,导入函数通过从起始单元格开始导入,并在到达最后一个空行或页脚范围时结束,从而自动检测数据范围。

也可以使用正标量行索引指定包含数据的第一行。

根据指定的行索引,导入函数通过从指定的第一行开始读取,一直到数据的最后或页脚范围,从而自动检测数据范围。

例如:'A5'5

'Corner1:Corner2'

矩形范围

使用矩形范围格式指定确切范围,其中 Corner1Corner2 是定义要读取的区域的两个对角。

导入函数只读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失单元导入。

列数必须与 NumVariables 属性中的指定的数字匹配。

示例:'A5:K50'

'Row1:Row2''Column1:Column2'

行范围或列范围

通过使用 Excel 行号标识起始行和结束行来指定范围。

根据指定的行范围,导入函数通过从第一个非空列开始读取,一直到数据的最后,从而自动检测列范围,并为每一列创建一个变量。

示例:'5:500'

也可以通过使用 Excel 列字母或列号标识起始列和结束列来指定范围。

根据指定的列范围,导入函数通过从第一个非空行开始读取,一直到数据的最后或页脚范围,从而自动检测行范围。

指定范围内的列数必须与 NumVariables 属性中指定的数字匹配。

示例:'A:K'

[n1 n2; n3 n4;...]

多个行范围

使用包含 N 个不同行范围的 N×2 数组来指定要读取的多个行范围

包含多个行范围的有效数组必须满足以下条件:

  • 以递增顺序指定行范围,也就是说,数组中指定的第一个行范围出现在文件中的其他行范围之前。

  • 仅包含不重叠的行范围。

Inf 只能用来指示指定了多个行范围的数组中的最后一个范围。例如,[1 3; 5 6; 8 Inf]

示例:[1 3; 5 6; 8 Inf]

''

未指定或为空

不获取任何数据。

示例:''

数据类型: char | string | cell | single | double

行名称的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 RowNamesRange 指定为下表中的值之一。

行为

'Cell'

使用 Excel A1 表示法指定数据的起始单元。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

导入函数为数据中的每个变量标识一个名称。

示例:'A5'

'Corner1:Corner2'

矩形范围

使用矩形范围格式指定确切范围,其中 Corner1Corner2 是定义要读取的区域的两个对角。

RowNamesRange 中包含的行数必须与数据行的数量匹配,而且 RowNamesRange 指示的范围只能跨一列。

示例:'A5:A50'

'Row1:Row2'

行范围

通过使用 Excel 行号标识起始行和结束行来指定范围。

行名称必须在单独一列中。

示例:'5:50'

n

数字索引

使用正标量列索引指定包含行名称的列。

示例:5

''

未指定或为空

指示没有行名称。

示例:''

数据类型: char | single | double

变量名称的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableNamesRange 指定为下表中的值之一。

行为

'Cell'

使用 Excel A1 表示法指定数据的起始单元。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

导入函数为数据中的每个变量读取一个名称。

示例:'A5'

'Corner1:Corner2'

矩形范围

使用矩形范围格式指定确切范围,其中 Corner1Corner2 是定义要读取的区域的两个对角。

列数必须与 NumVariables 属性中指定的数字匹配,而且范围只能跨一行。

示例:'A5:K5'

'Row1:Row2'

行范围

通过使用 Excel 行号标识起始行和结束行来指定范围。

必须为一行。

示例:'5:5'

n

数字索引

使用正标量行索引指定包含变量名称的行。

示例:5

''

未指定或为空

指示没有变量名称。

示例:''

数据类型: char | single | double

变量描述的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableDescriptionRange 指定为下表中的值之一。

行为

'Cell'

使用 Excel A1 表示法指定数据的起始单元。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

导入函数为数据中的每个变量读取一个描述。

示例:'A5'

'Corner1:Corner2'

矩形范围

使用矩形范围格式指定确切范围,其中 Corner1Corner2 是定义要读取的区域的两个对角。

列数必须与 NumVariables 属性中指定的数字匹配,而且范围只能跨一行。

示例:'A5:K5'

'Row1:Row2'

行范围

通过使用 Excel 行号标识起始行和结束行来指定范围。

必须为一行。

示例:'5:5'

n

数字索引

使用正标量行索引指定包含描述的行。

示例:5

''

未指定或为空

指示没有变量描述。

示例:''

数据类型: char | string | single | double

变量单位的位置,指定为字符向量、字符串标量、正整数标量或空字符数组。将 VariableUnitsRange 指定为下表中的值之一。

行为

'Cell'

使用 Excel A1 表示法指定数据的起始单元。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

导入函数为数据中的每个变量读取一个单位。

示例:'A5'

'Corner1:Corner2'

矩形范围

使用矩形范围格式指定确切范围,其中 Corner1Corner2 是定义要读取的区域的两个对角。

列数必须与 NumVariables 属性中指定的数字匹配,而且范围只能跨一行。

示例:'A5:K5'

'Row1:Row2'

行范围

通过使用 Excel 行号标识起始行和结束行来指定范围。

必须为一行。

示例:'5:5'

n

数字索引

使用正标量行索引指定包含数据单位的行。

示例:5

''

未指定或为空

指示没有变量单位。

示例:''

数据类型: char | string | single | double

替代规则

管理缺失数据的过程,指定为下表中的值之一。

缺失规则行为
'fill'

FillValue 属性的内容替代缺失的数据。

FillValue 属性在要导入的变量的 VariableImportOptions 对象中指定。有关访问 FillValue 属性的详细信息,请参阅 getvaropts

'error'停止导入并显示一条错误消息,指出缺失的记录和字段。
'omitrow'忽略包含缺失数据的行。
'omitvar'忽略包含缺失数据的变量。

示例: opts.MissingRule = 'omitrow';

数据类型: char | string

处理导入错误的过程,指定为下表中的值之一。

导入错误规则行为
'fill'

FillValue 属性的内容替代出现错误的数据。

FillValue 属性在要导入的变量的 VariableImportOptions 对象中指定。有关访问 FillValue 属性的详细信息,请参阅 getvaropts

'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 函数