本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。
基于文件创建表
基于文件创建一个表,并通过一个或多个名称-值对组参数指定其他选项。例如,您可以指定 T
= readtable(___,Name,Value
)readtable
是将文件的第一行读取为变量名称还是数据。
要为数据设置特定的导入选项,您可以使用 opts
对象,也可以指定名称-值对组。当您指定除 opts
之外的名称-值对组时,readtable
仅支持下列名称-值对组:
文本和电子表格参数 - ReadVariableNames
、ReadRowNames
仅文本参数 - DateLocale
、Encoding
仅电子表格参数 - Sheet
、UseExcel
加载文件 myCsvTable.dat
并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含逗号分隔的列向数据。
filename = 'myCsvTable.dat';
基于逗号分隔的文本文件创建表。生成的表 T
为文件中的每一列包含一个变量,readtable
将文件第一行中的项视为变量名称。
T = readtable(filename)
T=5×6 table
LastName Gender Age Height Weight Smoker
____________ ______ ___ ______ ______ ______
{'Smith' } {'M'} 38 71 176 1
{'Johnson' } {'M'} 43 69 163 0
{'Williams'} {'F'} 38 64 131 0
{'Jones' } {'F'} 40 67 133 0
{'Brown' } {'F'} 49 64 119 0
从 R2020a 开始,readtable
函数读取输入文件的方式就好像它自动对该文件调用 detectImportOptions
函数一样。它可以检测数据类型,丢弃多余的标题行,并填充缺失值。
例如,在文本编辑器中预览文件 headersAndMissing.txt
。该文件有一个列名行,还有一个标题行。最后两行有空缺,前面的各行包含数据值。
基于该文件创建一个表。readtable
函数将丢弃标题。此外,它还用适当的缺失值来填补空缺 - 对于数值变量,用 NaN
值;对于文本,用空字符向量。
T = readtable('headersAndMissing.txt')
T=5×6 table
LastName Gender Age Height Weight Smoker
___________ __________ ___ ______ ______ ______
{'Wu' } {'M' } 38 71 176 1
{'Johnson'} {'M' } 43 69 163 0
{'Sanchez'} {'F' } 38 64 131 0
{'Brown' } {'F' } NaN 67 133 0
{'Picard' } {0x0 char} NaN 64 119 0
要还原以前的版本的默认行为,请指定 'Format','auto'
名称-值对组参数。readtable
会将标题作为数据读取,因此,它会将所有表变量均转换为文本。
T = readtable('headersAndMissing.txt','Format','auto')
T=6×6 table
LastName Gender Age Height Weight Smoker
___________ __________ __________ _______ _______ ___________
{'string' } {'string'} {'int' } {'int'} {'int'} {'boolean'}
{'Wu' } {'M' } {'38' } {'71' } {'176'} {'1' }
{'Johnson'} {'M' } {'43' } {'69' } {'163'} {'0' }
{'Sanchez'} {'F' } {'38' } {'64' } {'131'} {'0' }
{'Brown' } {'F' } {0x0 char} {'67' } {'133'} {'0' }
{'Picard' } {0x0 char} {0x0 char} {'64' } {'119'} {'0' }
有关详细信息,请参阅本页的“兼容性注意事项”部分。
在文本编辑器中预览文件 mySpaceDelimTable.txt
。屏幕截图如下所示。请注意,该文件包含空格分隔的列向数据。
基于以空格分隔的文本文件创建一个表。由于文件的第一行不包含可检测到的列名称,因此 readtable
函数将分配默认的变量名称 Var1
到 Var5
。
T = readtable('mySpaceDelimTable.txt')
T=3×5 table
Var1 Var2 Var3 Var4 Var5
_____ ____ ____ ______ _________
{'M'} 45 45 {'NY'} {'true' }
{'F'} 41 32 {'CA'} {'false'}
{'M'} 40 34 {'MA'} {'false'}
加载文件 myCsvTable.dat
并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含逗号分隔的列向数据。
filename = 'myCsvTable.dat';
基于逗号分隔的文本文件创建表。将前两列导入为字符向量,将第三列导入为 uint32
,将接下来的两列导入为双精度浮点数。将最后一列的条目导入为字符向量。
T = readtable(filename,'Format','%s%s%u%f%f%s')
T=5×6 table
LastName Gender Age Height Weight Smoker
____________ ______ ___ ______ ______ ______
{'Smith' } {'M'} 38 71 176 {'1'}
{'Johnson' } {'M'} 43 69 163 {'0'}
{'Williams'} {'F'} 38 64 131 {'0'}
{'Jones' } {'F'} 40 67 133 {'0'}
{'Brown' } {'F'} 49 64 119 {'0'}
对于字符向量元胞数组,转换设定符为 %s
,对于 double
,转换设定符为 %f
,对于 uint32
,转换设定符为 %u
。
从文件读取以德语表示的日期,再用以英语表示的日期形式,将其添加到一个表中。
在文本编辑器中预览文件 german_dates.txt
。屏幕截图如下所示。请注意,第一列值包含德语的日期,第二列和第三列是数值。
使用 readtable
读取示例文件。对于日期,转换设定符为 %D
,对于浮点值,转换设定符为 %f
。使用 FileEncoding
名称-值对组参数指定文件编码。使用 DateLocale
名称-值对组参数指定日期格式和区域设置。
T = readtable('german_dates.txt',... 'Format','%{dd MMMM yyyy}D %f %f',... 'FileEncoding','ISO-8859-15',... 'DateLocale','de_DE')
T=3×3 table
Var1 Var2 Var3
________________ ____ _____
01 January 2014 20.2 100.5
01 February 2014 21.6 102.7
01 March 2014 20.7 99.8
基于包含第一行的变量名称和第一列的行名称的电子表格创建表。
T = readtable('patients.xls','ReadRowNames',true);
显示表的前五行和前四个变量。
T(1:5,1:4)
ans=5×4 table
Gender Age Location Height
__________ ___ _____________________________ ______
Smith {'Male' } 38 {'County General Hospital' } 71
Johnson {'Male' } 43 {'VA Hospital' } 69
Williams {'Female'} 38 {'St. Mary's Medical Center'} 64
Jones {'Female'} 40 {'VA Hospital' } 67
Brown {'Female'} 49 {'County General Hospital' } 64
查看该表的 DimensionNames
属性。
T.Properties.DimensionNames
ans = 1x2 cell
{'LastName'} {'Variables'}
'LastName'
是电子表格第一行第一列中的名称。
使用电子表格 patients.xls
的指定区域中的数据创建表。使用 C2
和 E6
两个对角之间的 5×3 矩形区域内的数据。不要将该区域的第一行用作变量名称。
T = readtable('patients.xls',... 'Range','C2:E6',... 'ReadVariableNames',false)
T = Var1 Var2 Var3 ____ ___________________________ ____ 38 'County General Hospital' 71 43 'VA Hospital' 69 38 'St. Mary's Medical Center' 64 40 'VA Hospital' 67 49 'County General Hospital' 64
T
包含默认的变量名称。
创建导入选项,定制多个变量的数据类型,然后读取数据。
根据文本文件创建导入选项对象。
opts = detectImportOptions('airlinesmall.csv')
opts = DelimitedTextImportOptions with properties: Format Properties: Delimiter: {','} Whitespace: '\b\t ' LineEnding: {'\n' '\r' '\r\n'} CommentStyle: {} ConsecutiveDelimitersRule: 'split' LeadingDelimitersRule: 'keep' EmptyLineRule: 'skip' Encoding: 'ISO-8859-1' Replacement Properties: MissingRule: 'fill' ImportErrorRule: 'fill' ExtraColumnsRule: 'addvars' Variable Import Properties: Set types by name using setvartype VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more} VariableTypes: {'double', 'double', 'double' ... and 26 more} SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more} VariableOptions: Show all 29 VariableOptions Access VariableOptions sub-properties using setvaropts/getvaropts PreserveVariableNames: false Location Properties: DataLines: [2 Inf] VariableNamesLine: 1 RowNamesColumn: 0 VariableUnitsLine: 0 VariableDescriptionsLine: 0 To display a preview of the table, use preview
检查变量 TaxiIn
和 TaxiOut
的 Type
属性。
getvaropts(opts,{'TaxiIn','TaxiOut'})
ans = 1x2 TextVariableImportOptions array with properties: Name Type FillValue TreatAsMissing QuoteRule Prefixes Suffixes EmptyFieldRule WhitespaceRule
将变量 TaxiIn
和 TaxiOut
的类型更改为 double
。
opts = setvartype(opts,{'TaxiIn','TaxiOut'},'double');
指定要导入和检查的变量的子集。
opts.SelectedVariableNames = {'TaxiIn','TaxiOut'};
使用 readtable
函数以及选项对象导入选定的变量。显示表的摘要。
T = readtable('airlinesmall.csv',opts);
summary(T)
Variables: TaxiIn: 123523x1 double Values: Min 0 Median 5 Max 1451 NumMissing 37383 TaxiOut: 123523x1 double Values: Min 0 Median 13 Max 755 NumMissing 37364
检测针对电子表格文件的导入选项,指定要导入的变量,然后读取数据。
根据文件创建导入选项对象。
opts = detectImportOptions('patients.xls')
opts = SpreadsheetImportOptions with properties: Sheet Properties: Sheet: '' Replacement Properties: MissingRule: 'fill' ImportErrorRule: 'fill' Variable Import Properties: Set types by name using setvartype VariableNames: {'LastName', 'Gender', 'Age' ... and 7 more} VariableTypes: {'char', 'char', 'double' ... and 7 more} SelectedVariableNames: {'LastName', 'Gender', 'Age' ... and 7 more} VariableOptions: Show all 10 VariableOptions Access VariableOptions sub-properties using setvaropts/getvaropts PreserveVariableNames: false Range Properties: DataRange: 'A2' (Start Cell) VariableNamesRange: 'A1' RowNamesRange: '' VariableUnitsRange: '' VariableDescriptionsRange: '' To display a preview of the table, use preview
修改选项对象以指定要导入的变量。
opts.SelectedVariableNames = {'Systolic','Diastolic'};
使用 readtable
以及选项对象导入指定的变量。
T = readtable('patients.xls',opts);
summary(T)
Variables: Systolic: 100x1 double Values: Min 109 Median 122 Max 138 Diastolic: 100x1 double Values: Min 68 Median 81.5 Max 99
您可以读取表格数据,同时保留包含任何字符的变量名称,包括空格和非 ASCII 字符。首先,创建一个具有任意变量名称的表,并将该表写入文本文件。然后,读回表格数据,同时保留原始变量名称。
创建包含任意变量名称的表,并将表格数据写入文件 'sampletable.txt'
。
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'}; Age = [38;43;38;40;49]; Smoker = logical([1;0;1;0;1]); varNames = {'Last Name','Age','Smoker (1 or 0)'}; T = table(LastName,Age,Smoker,'VariableNames',varNames)
T=5×3 table
Last Name Age Smoker (1 or 0)
___________ ___ _______________
{'Sanchez'} 38 true
{'Johnson'} 43 false
{'Li' } 38 true
{'Diaz' } 40 false
{'Brown' } 49 true
writetable(T,'sampletable.txt')
使用 readtable
读回表格数据。默认情况下,MATLAB® 将任何包含空格和非 ASCII 字符的变量名称转换为有效的 MATLAB® 标识符。例如,MATLAB® 将变量名称 'Last Name'
转换为 'LastName'
,将 'Smoker (1 or 0)'
转换为 'Smoker_1or0_'
。要在保留变量名称的同时读取表格数据,请将 'PreserveVariableNames'
参数设置为 true
。
T_preserve = readtable('sampletable.txt','PreserveVariableNames',true)
T_preserve=5×3 table
Last Name Age Smoker (1 or 0)
___________ ___ _______________
{'Sanchez'} 38 1
{'Johnson'} 43 0
{'Li' } 38 1
{'Diaz' } 40 0
{'Brown' } 49 1
您可以从文件中读取十六进制和二进制数字,并将它们作为数值变量存储在表中。readtable
函数会自动读取分别包含 0x
和 0b
前缀的十六进制和二进制数字。数值使用整数数据类型存储。您也可以使用导入选项来读取不带前缀的这些数字。
在文本编辑器中预览 hexAndBinary.txt
文件。它的一些列包含带前缀的十六进制和二进制数字,还有一列包含不带前缀的这些数字。
使用 readtable
读取文件。该函数检测具有 0x
和 0b
前缀的数字,并将它们作为整数存储。第三列没有前缀,因此其值被视为文本。
T = readtable('hexAndBinary.txt')
T=3×4 table
Var1 Var2 Var3 Var4
_____ ____ ________ ___________
255 255 {'C7F9'} {'Device1'}
256 4 {'05BF'} {'Device2'}
43981 129 {'F00F'} {'Device3'}
readtable
函数将数值存储在不同整数类(uint16
和 uint8
)中,因为 T.Var1
的值需要 8 位以上的存储空间。
class(T.Var1)
ans = 'uint16'
class(T.Var2)
ans = 'uint8'
要指定用于存储从十六进制和二进制数字导入的数值的数据类型,请使用 'HexType'
和 'BinaryType'
名称-值对组参数。将值存储为有符号 32 位整数。
T = readtable('hexAndBinary.txt','HexType','int32','BinaryType','int32'); class(T.Var1)
ans = 'int32'
class(T.Var2)
ans = 'int32'
您可以使用导入选项来检测不带前缀的十六进制和二进制数字,并为它们指定存储。为 hexAndBinary.txt
创建一个导入选项对象。
opts = detectImportOptions('hexAndBinary.txt')
opts = DelimitedTextImportOptions with properties: Format Properties: Delimiter: {','} Whitespace: '\b\t ' LineEnding: {'\n' '\r' '\r\n'} CommentStyle: {} ConsecutiveDelimitersRule: 'split' LeadingDelimitersRule: 'keep' EmptyLineRule: 'skip' Encoding: 'UTF-8' Replacement Properties: MissingRule: 'fill' ImportErrorRule: 'fill' ExtraColumnsRule: 'addvars' Variable Import Properties: Set types by name using setvartype VariableNames: {'Var1', 'Var2', 'Var3' ... and 1 more} VariableTypes: {'auto', 'auto', 'char' ... and 1 more} SelectedVariableNames: {'Var1', 'Var2', 'Var3' ... and 1 more} VariableOptions: Show all 4 VariableOptions Access VariableOptions sub-properties using setvaropts/getvaropts PreserveVariableNames: false Location Properties: DataLines: [1 Inf] VariableNamesLine: 0 RowNamesColumn: 0 VariableUnitsLine: 0 VariableDescriptionsLine: 0 To display a preview of the table, use preview
要指定第三列应作为十六进制值导入,即使缺少前缀也要导入,请使用 setvaropts
函数来修改表中第三个变量的变量类型。将变量类型设置为 int32
。
opts = setvaropts(opts,3,'NumberSystem','hex','Type','int32')
opts = DelimitedTextImportOptions with properties: Format Properties: Delimiter: {','} Whitespace: '\b\t ' LineEnding: {'\n' '\r' '\r\n'} CommentStyle: {} ConsecutiveDelimitersRule: 'split' LeadingDelimitersRule: 'keep' EmptyLineRule: 'skip' Encoding: 'UTF-8' Replacement Properties: MissingRule: 'fill' ImportErrorRule: 'fill' ExtraColumnsRule: 'addvars' Variable Import Properties: Set types by name using setvartype VariableNames: {'Var1', 'Var2', 'Var3' ... and 1 more} VariableTypes: {'auto', 'auto', 'int32' ... and 1 more} SelectedVariableNames: {'Var1', 'Var2', 'Var3' ... and 1 more} VariableOptions: Show all 4 VariableOptions Access VariableOptions sub-properties using setvaropts/getvaropts PreserveVariableNames: false Location Properties: DataLines: [1 Inf] VariableNamesLine: 0 RowNamesColumn: 0 VariableUnitsLine: 0 VariableDescriptionsLine: 0 To display a preview of the table, use preview
读取文件并将第三列作为数值(而不是文本)导入。
T = readtable('hexAndBinary.txt',opts)
T=3×4 table
Var1 Var2 Var3 Var4
_____ ____ _____ ___________
255 255 51193 {'Device1'}
256 4 1471 {'Device2'}
43981 129 61455 {'Device3'}
filename
- 要读取的文件的名称要读取的文件的名称,指定为字符向量或字符串标量。
根据文件的位置,filename
可以采用下列形式之一。
位置 | 形式 | ||||||||
---|---|---|---|---|---|---|---|---|---|
当前文件夹或 MATLAB® 路径上的文件夹 | 指定 示例: | ||||||||
文件夹中的文件 | 如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则在 示例: 示例: | ||||||||
远程位置 | 如果文件存储在远程位置,则
根据您的远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
如果 filename
包含文件扩展名,则导入函数基于扩展名确定文件格式。否则,您必须指定 'FileType'
名称-值对组参数以指示文件类型。
在安装了 Microsoft® Excel® 软件的 Windows® 系统上,导入函数读取您的 Excel 版本可识别的任何 Excel 电子表格文件格式。
如果您的系统没有 Windows 版 Excel 或者您正在使用 MATLAB Online™,则导入函数在 UseExcel
属性设置为 false
的情况下运行,并且只读取 .xls, .xlsx, .xlsm, .xltx, and .xltm
文件。
对于分隔的文本文件,导入函数将文件中的空字段转换为 NaN
(对于数值变量)或空字符向量(对于文本变量)。文本文件中的所有行必须有相同数量的分隔符。导入函数会忽略文件中的无用空白。
数据类型: char
| string
opts
- 文件导入选项SpreadsheetImportOptions
| DelimitedtextImportOptions
| FixedWidthImportOptions
文件导入选项,指定为 detectImportOptions
函数创建的 SpreadsheetImportOptions
、DelimitedTextImportOptions
或 FixedWidthImportOptions
对象。opts
对象包含控制数据导入过程的属性。有关每个对象的属性的详细信息,请参阅相应的对象页。
文件类型 | 输出 |
---|---|
电子表格文件 | SpreadsheetImportOptions 对象 |
文本文件 | DelimitedTextImportOptions 对象 |
等宽文本文件 | FixedWidthImportOptions 对象 |
指定可选的、以逗号分隔的 Name,Value
对组参数。Name
为参数名称,Value
为对应的值。Name
必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN
所示。
'ReadVariableNames',false
指示文件的第一行与变量名称不对应。当读取文件时:
文本文件,仅以下参数名称适用:FileType
、ReadVariableNames
、ReadRowNames
、TreatAsEmpty
、DatetimeType
、Delimiter
、HeaderLines
、Format
、EmptyValue
、MultipleDelimsAsOne
、CollectOutput
、CommentStyle
、ExpChars
、EndOfLine
、DateLocale
、Encoding
和 HexType
和 BinaryType
。
如果是电子表格文件,则仅以下参数名称适用:FileType
、ReadVariableNames
、ReadRowNames
、TreatAsEmpty
、DatetimeType
、Sheet
、Range
、UseExcel
和 TextType
。
如果是具有 opts
导入选项的文本或电子表格文件,则仅以下参数名称适用:ReadVariableNames
、ReadRowNames
、DateLocale
、Encoding
、Sheet
和 UseExcel
。
'FileType'
- 文件类型'text'
| 'spreadsheet'
文件类型,以逗号分隔的对组形式指定,其中包含 'FileType'
以及 'text'
或 'spreadsheet'
。
当 filename
不包含文件扩展名或扩展名不是以下任一项时,请指定 'FileType'
名称-值对组参数。
.txt
、.dat
或 .csv
(适用于带分隔符的文本文件)
.xls
、.xlsb
、.xlsm
、.xlsx
、.xltm
、.xltx
或 .ods
(适用于电子表格文件)
示例: 'FileType','text'
数据类型: char
| string
'ReadVariableNames'
- 读取第一行作为变量名称true
| false
| 1
| 0
读取第一行以作为变量名称的指示符,指定为逗号分隔的对组,包含 'ReadVariableNames'
和 true
、false
、1
或 0
。如果未指定,readtable
将自动检测是否存在变量名称。
指示符 | 说明 |
---|---|
| 当要读取的区域的第一行包含表格的变量名称时使用。 |
| 当要读取的区域的第一行包含表格中的数据时使用。 |
未指定 | 如果未指定,readtable 将自动检测 true 或 false ,并进行相应的处理。 |
注意:如果 'ReadVariableNames'
和 'ReadRowNames'
逻辑指示符都为 true
,则 readtable
将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames
中的第一个维度名称。
如果除 opts
导入选项外您还指定了 ReadVariableNames
参数,readtable
的行为将因您的指定而异:
如果 ReadVariableNames
为 true
,则通过使用导入选项对象的 VariableNamesRange
或 VariableNamesLine
属性从指定的文件中读取变量名称。
如果 ReadVariableNames
为 false
,则从导入选项对象的 VariableNames
属性中读取变量名称。
'ReadRowNames'
- 读取第一列以作为行名称的指示符false
(默认) | true
| 0
| 1
读取第一列以作为行名称的指示符,指定为逗号分隔的对组,包含 'ReadRowNames'
和 false
、true
、0
或 1
。
指示符 | 说明 |
---|---|
| 当要读取的区域第一列包含的是数据而不是表的行名称时使用。 |
| 当要读取的区域第一列包含表的行名称时使用。 |
未指定 | 如果未指定,readtable 将假定为 false 。 |
注意:如果 'ReadVariableNames'
和 'ReadRowNames'
逻辑指示符都为 true
,则 readtable
将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames
中的第一个维度名称。
如果除 opts
导入选项外您还指定了 ReadRowNames
参数,readtable
的行为将因您的指定而异:
如果 ReadRowNames
为 true
,则通过使用导入选项对象的 RowNamesRange
或 RowNameColumn
属性从指定的文件中读取行名称。
如果 ReadRowNames
为 false
,则不导入行名称。
'TreatAsEmpty'
- 要作为空值处理的占位符文本要作为空值处理的占位符文本,指定为逗号分隔的对组,其中包含 'TreatAsEmpty'
和一个字符向量、字符向量元胞数组、字符串或字符串数组。与这些字符对应的表元素设置为 NaN
。
'TreatAsEmpty'
仅应用于文件中的数值列,而 readtable
不接受数值文字,例如 '-99'
。
示例: 'TreatAsEmpty','N/A'
或 'TreatAsEmpty',"N/A"
将数值列内的 N/A
设置为 NaN
。
示例: 'TreatAsEmpty',{'.','NA','N/A'}
或 'TreatAsEmpty',[".","NA","N/A"]
将数值列内的 .
、NA
和 N/A
设置为 NaN
。
数据类型: char
| string
'TextType'
- 导入的文本数据的类型 'char'
(默认) | 'string'
导入的文本数据的类型,指定为以逗号分隔的对组,其中包含 'TextType'
和 'char'
或 'string'
中的任一项。
'char'
- 将文本数据作为字符向量导入 MATLAB 中。
'string'
- 将文本数据作为字符串数组导入 MATLAB 中。
示例: 'TextType','char'
'DatetimeType'
- 导入的日期和时间数据的类型'datetime'
(默认) | 'text'
| 'exceldatenum'
(仅限电子表格文件)导入的日期和时间数据的类型,指定为以逗号分隔的对组,其中包含 'DatetimeType'
和下列值之一:'datetime'
、'text'
或 'exceldatenum'
。值 'exceldatenum'
仅适用于电子表格文件,对文本文件无效。
值 | 导入的日期和时间数据的类型 |
---|---|
'datetime' | MATLAB 有关详细信息,请参阅 |
'text' | 如果将
|
'exceldatenum' | Excel 日期序列值 日期序列值是一个数字,它等于从给定的参照日期开始计算的天数。Excel 日期序列值与 MATLAB 日期序列值使用不同的参照日期。有关 Excel 日期的详细信息,请参阅 |
数据类型: char
| string
'PreserveVariableNames'
- 保留变量名称的标志false
(默认) | true
保留变量名称的标志,指定为以逗号分隔的对组,由 PreserveVariableNames
和 true
或 false
组成。
true
- 保留作为无效 MATLAB 标识符的变量名称,如包含空格和非 ASCII 字符的变量名称。
false
- 将无效变量名称(由 isvarname
函数确定)转换为有效的 MATLAB 标识符。
从 R2019b 开始,变量名称和行名称可以包含任何字符,包括空格和非 ASCII 字符。此外,它们可以由任何字符(而不仅仅是字母)开头。变量名称和行名称可以不是有效的 MATLAB 标识符(由 isvarname
函数决定)。要保留这些变量名称和行名称,请将 PreserveVariableNames
设置为 true
。
'Delimiter'
- 字段分隔符字段分隔符,指定为由 'Delimiter'
以及一个字符向量、字符向量元胞数组或字符串组成的逗号分隔对组。使用任何有效字符(如逗号 ','
或句点 '.'
)指定 Delimiter
。
下表列出了一些常用的字段分隔符。
设定符 | 字段分隔符 |
---|---|
| 逗号 |
| 空格 |
| 制表符 |
| 分号 |
| 垂直条 |
未指定 | 如果未指定, |
要将连续分隔符视为单个分隔符,请将 Delimiter
指定为字符向量元胞数组。您还必须指定 MultipleDelimsAsOne
选项。
示例: 'Delimiter',','
或 'Delimiter','comma'
数据类型: char
| string
| cell
'HeaderLines'
- 要跳过的行数文件开头要跳过的行数,指定为逗号分隔的对组,其中包含 'HeaderLines'
和一个正整数。如果未指定,readtable
将自动检测要跳过的行数。
数据类型: single
| double
'Format'
- 列格式'auto'
文件的列格式,指定为逗号分隔的对组,其中包含 'Format'
和一个字符向量或字符串标量(由一个或多个转换设定符组成)或 'auto'
。转换设定符与 textscan
函数接受的设定符相同。
指定该格式可以显著加快一些大文件的处理速度。如果不为 Format
指定一个值,则 readtable
将使用 %q
解释非数值列。%q
设定符会读取文本并在适当情况下忽略双引号 ("
)。
如果您没有指定 'Format'
名称-值对组,则 readtable
函数的行为就像您使用了 detectImportOptions
函数的结果来导入数据一样。有关此行为导致的结果的详细信息,请参阅兼容性注意事项。
如果您指定 'Format','auto'
,则创建的变量是 double
数组、字符向量元胞数组或 datetime
数组,具体取决于数据。如果整列都是数值,则将变量作为 double
数组导入。如果一列中有任一元素不是数值,则将这些变量作为字符向量元胞数组导入,或作为 datetime
数组导入(如果值表示日期和时间)。
数据类型: char
| string
'EmptyValue'
- 空数值字段的返回值NaN
(默认) | 标量被分隔的文本文件中空数值字段的返回值,指定为由 'EmptyValue'
和一个标量组成的逗号分隔对组。
'MultipleDelimsAsOne'
- 多分隔符处理0 (false)
(默认) | 1 (true)
多分隔符处理,指定为由 'MultipleDelimsAsOne'
和 true
/false
组成的逗号分隔对组。如果为 true
,则导入函数将连续分隔符当作一个分隔符处理。由空白分隔的重复分隔符也被当作一个分隔符处理。您还必须指定 Delimiter
选项。
示例: 'MultipleDelimsAsOne',1
'CollectOutput'
- 确定数据串联的逻辑指示符false
(默认) | true
确定数据串联的逻辑指示符,指定为由 'CollectOutput'
和 true
/false
组成的逗号分隔对组。如果为 true
,则导入函数会将同一 MATLAB 基础类的连续输出元胞串联为单个数组。
'CommentStyle'
- 指定要忽略的文本的符号用于指定要忽略的文本的符号,指定为逗号分隔的对组,其中包含 'CommentStyle'
和一个字符向量、字符向量元胞数组、字符串或字符串数组。
例如,指定一个字符(如 '%'
)以忽略同一行上此符号后面的文本。指定一个包含两个字符向量的元胞数组(如 {'/*','*/'}
),以忽略这些序列之间的任何文本。
MATLAB 仅检查位于每个字段开头而不是字段中的注释。
示例: 'CommentStyle',{'/*','*/'}
数据类型: char
| string
'ExpChars'
- 指数字符'eEdD'
(默认) | 字符向量 | 字符串指数字符,指定为由 'ExpChars'
和一个字符向量或字符串组成的逗号分隔对组。默认的指数字符为 e
、E
、d
和 D
。
数据类型: char
| string
'EndOfLine'
- 行尾字符行尾字符,指定为由 'EndOfLine'
和一个字符向量或字符串组成的逗号分隔对组。该字符向量必须为 '\r\n'
,或须指定单个字符。常用的行尾字符是换行符 ('\n'
) 或回车符 ('\r'
)。如果您指定 '\r\n'
,则导入函数会将 \r
或 \n
以及两者的组合 (\r\n
) 视为行尾字符。
默认的行尾序列是 \n
、\r
或 \r\n
,具体取决于您的文件的内容。
如果文件最后一行的结尾有缺失值和行尾序列,则导入函数会对这些字段返回空值。这样可确保输出元胞数组 C
中的各个元胞的大小相同。
示例: 'EndOfLine',':'
数据类型: char
| string
'DateLocale'
- 用于读取日期的区域设置用于读取日期的区域设置,指定为逗号分隔的对组,其中包含 'DateLocale'
和一个
形式的字符向量或字符串标量,其中:xx
_YY
YY
是指示国家/地区的大写 ISO 3166-1 alpha-2 代码。
xx
是指示语言的小写 ISO 639-1 双字母代码。
有关区域设置的常见值的列表,请参阅 datetime
函数的 Locale
名称-值对组参数。
使用 %D
格式设定符来将文本读取为 datetime
值时,请使用 DateLocale
指定导入函数应使用何种区域设置来解释月份和星期几的名称及缩写。
如果除 opts
导入选项外您还指定了 DateLocale
参数,则导入函数将使用为 DateLocale
参数指定的值,而覆盖导入选项中定义的区域设置。
示例: 'DateLocale','ja_JP'
'Encoding'
- 字符编码方案'UTF-8'
| 'ISO-8859-1'
| 'windows-1251'
| 'windows-1252'
| ...与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding'
和 'system'
或标准字符编码方案名称。如果您没有指定任何编码,则 readtable
函数在读取文件时将使用自动字符集检测来确定编码。
如果除导入选项外您还指定了 'Encoding'
参数,readtable
函数将使用为 'Encoding'
指定的值,而覆盖导入选项中定义的编码方案。
示例: 'Encoding','UTF-8'
使用 UTF-8 作为编码。
示例: 'Encoding','system'
使用系统默认编码。
数据类型: char
| string
'DurationType'
- 持续时间数据的输出数据类型'duration'
(默认) | 'text'
来自文本文件的持续时间数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'DurationType'
和 'duration'
或 'text'
。
值 | 导入的持续时间数据的类型 |
---|---|
'duration' | MATLAB 有关详细信息,请参阅 |
'text' | 如果将
|
数据类型: char
| string
'HexType'
- 十六进制数据的输出数据类型'auto'
(默认) | 'text'
| 'int8'
| 'int16'
| ...十六进制数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'HexType'
和下表中列出的值之一。
输入文件以文本形式表示十六进制值,使用 0x
或 0X
作为前缀,以字符 0
-9
、a
-f
和 A
-F
作为数字。(大写和小写字母表示相同的数字 - 例如,'0xf'
和 '0xF'
都表示 15
。)
导入函数将十六进制值转换为由 'HexType'
的值指定的数据类型。
| 输出表变量的数据类型 |
---|---|
| 自动检测到的数据类型 |
| 未更改的输入文本 |
| 8 位有符号整数 |
| 16 位有符号整数 |
| 32 位有符号整数 |
| 64 位有符号整数 |
| 8 位无符号整数 |
| 16 位无符号整数 |
| 32 位无符号整数 |
| 64 位无符号整数 |
示例: 'HexType','uint16'
将输出表中表示十六进制值的文本(如 '0xFF'
)转换为 16 位无符号整数(如 255
)。
数据类型: char
| string
'BinaryType'
- 二进制数据的输出数据类型'auto'
(默认) | 'text'
| 'int8'
| 'int16'
| ...二进制数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'BinaryType'
和下表中列出的值之一。
输入文件以文本形式表示二进制值,使用 0b
或 0B
作为前缀,以字符 0
和 1
作为数字。
导入函数将二进制值转换为由 'BinaryType'
的值指定的数据类型。
| 输出表变量的数据类型 |
---|---|
| 自动检测到的数据类型 |
| 未更改的输入文本 |
| 8 位有符号整数 |
| 16 位有符号整数 |
| 32 位有符号整数 |
| 64 位有符号整数 |
| 8 位无符号整数 |
| 16 位无符号整数 |
| 32 位无符号整数 |
| 64 位无符号整数 |
示例: 'BinaryType','uint16'
将输出表中表示二进制值的文本(如 '0b11111111'
)转换为 16 位无符号整数(如 255
)。
数据类型: char
| string
'Sheet'
- 要读取的工作表1
(默认) | 正整数 | 字符向量 | 字符串要读取的工作表,指定为逗号分隔的对组,其中包含 'Sheet'
和一个正整数(指示工作表索引)或字符向量或字符串(包含工作表名称)。工作表名称不能包含冒号 (:
)。要确定电子表格文件中工作表的名称,请使用 sheets = sheetnames(filename)
。有关详细信息,请参阅 sheetnames
。
如果除 opts
导入选项外您还指定了 Sheet
参数,readtable
函数将使用为 Sheet
参数指定的值,而覆盖导入选项中定义的工作表名称。
示例: 'Sheet'
, 2
示例: 'Sheet'
, 'MySheetName'
示例: 'Sheet'
, "MySheetName"
数据类型: char
| string
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'Range'
- 要读取的工作表的部分要读取的工作表部分,指示为由逗号分隔的对组指定的矩形区域,其中包含 'Range'
和一个采用以下格式之一的字符向量或字符串标量。
指定 Range 的方式 | 说明 |
---|---|
起始单元格 | 将数据的起始单元格指定为字符向量、字符串标量或二元素数值向量。
根据起始单元格,导入函数通过从起始单元格开始导入,并在到达最后一个空行或页脚范围时结束,从而自动检测数据范围。 例如: |
矩形范围 | 使用语法 示例: |
未指定或为空 | 如果未指定, 示例: 注意:使用范围是指电子表格中实际包含数据的矩形部分。 |
行范围 | 您可以通过使用 Excel 行标志符指定开始行和结束行来标识范围。然后, 示例: |
列范围 | 您可以通过使用 Excel 列标志符指定开始列和结束列来标识范围。然后, 示例: |
Excel 中的命名范围 | 在 Excel 中,您可以创建名称来标识电子表格中的范围。例如,您可以选择电子表格的一个矩形部分,并将其命名为 示例: |
示例: 'Range'
, 'A1:F10'
示例: 'Range'
、"A1:F10"
-
数据类型: char
| string
'UseExcel'
- 用于启动 Windows 版 Microsoft Excel 实例的标志false
(默认) | true
用于在读取电子表格数据时启动 Windows 版 Microsoft Excel 实例的标志,指定为逗号分隔的对组,包含 'UseExcel'
和 true
或 false
。
您可以将 'UseExcel'
参数设置为下列值之一:
true
- 导入函数在读取文件时启动 Microsoft Excel 的实例。
false
- 导入函数在读取文件时不启动 Microsoft Excel 的实例。在此模式下操作时,导入函数功能支持的文件格式和交互式功能(例如公式和宏)有所不同。
UseExcel |
|
|
---|---|---|
支持的文件格式 |
|
|
支持交互功能,例如公式和宏 | 是 | 否 |
从 Windows 平台上的电子表格文件中读取时,如果您想启动 Microsoft Excel 实例,则将 'UseExcel'
参数设置为 true
。
XLSX 格式的大文件有时会加载缓慢。为了获得更好的导入和导出性能,Microsoft 推荐您使用 XLSB 格式。
detectImportOptions
函数的结果导入表格数据R2020a 中的行为有变化
默认情况下,readtable
函数使用 detectImportOptions
函数的结果来导入表格数据。本质上,这两个函数的调用行为相同。
T = readtable(filename) T = readtable(filename,detectImportOptions(filename))
在 R2020a 中,readtable
的默认行为与其以前版本中的默认行为有几个不同之处。
输入字段或行的说明 |
| 在以前版本中的默认行为 |
---|---|---|
第一行不包含作为输出表变量名称分配的文本 | 将名称 | 将第一行数据值转换为输出表变量的名称 |
多行文本作为标题行 |
|
|
空字段 | 视为检测到的数据类型的缺失值 | 视为空字符向量或字符串 |
引号中的值 | 视为检测到的数据类型 | 视为文本 |
无法转换的文本 | 视为检测到的数据类型的缺失值 | 视为文本 |
数值字符后跟非数值字符,两者之间没有分隔符 | 将字符视为非数值 | 将数值字符和非数值字符视作由分隔符隔开 |
输入文本文件的行具有不同数量的分隔符 | 返回具有额外变量的输出表 | 引发错误消息 |
要使用 R2019b 及之前的默认行为调用 readtable
,请使用 'Format','auto'
名称-值对组参数。
T = readtable(filename,'Format','auto')
detectImportOptions
| preview
| readcell
| readmatrix
| readtimetable
| readvars
| setvaropts
| table
| textscan
| writetable
| 导入工具
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.