Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

readtable

基于文件创建表

说明

示例

T = readtable(filename) 通过从文件中读取列向数据来创建表。

readtable 基于文件的扩展名确定文件格式:

  • .txt.dat.csv(适用于带分隔符的文本文件)

  • .xls.xlsb.xlsm.xlsx.xltm.xltx.ods(适用于电子表格文件)

  • .xml(适用于可扩展标记语言 (XML) 文件)

对于文本和电子表格文件,readtable 为该文件中的每列在 T 中创建一个变量并从文件的第一行中读取变量名称。对于 XML 文件,readtableT 中为检测为表变量的每个元素或属性节点创建一个变量。变量名称对应于元素和属性名称。

默认情况下,readtable 会根据在输入文件的每列中检测到的数据值来创建具有适当数据类型的变量。

示例

T = readtable(filename,opts) 使用导入选项 opts 创建表。

示例

T = readtable(___,Name,Value) 基于文件创建一个表,并通过一个或多个名称-值对组参数指定其他选项。例如,您可以指定 readtable 是将文件的第一行读取为变量名称还是数据。

要为数据设置特定的导入选项,您可以使用 opts 对象,也可以指定名称-值对组。当您指定除 opts 之外的名称-值对组时,readtable 仅支持下列名称-值对组:

  • 文本和电子表格参数 - ReadVariableNamesReadRowNames

  • 仅文本参数 - DateLocaleEncoding

  • 仅电子表格参数 - SheetUseExcel

示例

全部折叠

加载文件 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 函数将分配默认的变量名称 Var1Var5

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 的指定区域中的数据创建表。使用 C2E6 两个对角之间的 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'
       TrailingDelimitersRule: 'ignore'
                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
           VariableNamingRule: 'modify'

   Location Properties:
                    DataLines: [2 Inf]
            VariableNamesLine: 1
               RowNamesColumn: 0
            VariableUnitsLine: 0
     VariableDescriptionsLine: 0 
	To display a preview of the table, use preview

检查变量 TaxiInTaxiOutType 属性。

getvaropts(opts,{'TaxiIn','TaxiOut'})
ans = 
  1x2 TextVariableImportOptions array with properties:

    Name
    Type
    FillValue
    TreatAsMissing
    QuoteRule
    Prefixes
    Suffixes
    EmptyFieldRule
    WhitespaceRule

将变量 TaxiInTaxiOut 的类型更改为 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
           VariableNamingRule: 'modify'

   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_'。要在保留变量名称的同时读取表格数据,请将 'VariableNamingRule' 参数设置为 preserve

T_preserve = readtable('sampletable.txt',"VariableNamingRule","preserve")
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 函数会自动读取分别包含 0x0b 前缀的十六进制和二进制数字。数值使用整数数据类型存储。您也可以使用导入选项来读取不带前缀的这些数字。

在文本编辑器中预览 hexAndBinary.txt 文件。它的一些列包含带前缀的十六进制和二进制数字,还有一列包含不带前缀的这些数字。

使用 readtable 读取文件。该函数检测具有 0x0b 前缀的数字,并将它们作为整数存储。第三列没有前缀,因此其值被视为文本。

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 函数将数值存储在不同整数类(uint16uint8)中,因为 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'
       TrailingDelimitersRule: 'ignore'
                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
           VariableNamingRule: 'modify'

   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'
       TrailingDelimitersRule: 'ignore'
                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
           VariableNamingRule: 'modify'

   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'}

为 XML 文件创建 XML 导入选项,指定要导入的变量,然后读取数据。

XML 文件 students.xml 有四个名为 Student 的同级节点,每个节点都包含相同的子节点和属性。

type students.xml
<?xml version="1.0" encoding="utf-8"?>
<Students>
    <Student ID="S11305">
        <Name FirstName="Priya" LastName="Thompson" />
        <Age>18</Age>
        <Year>Freshman</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">591 Spring Lane</Street>
            <City>Natick</City>
            <State>MA</State>
      </Address>
      <Major>Computer Science</Major>
      <Minor>English Literature</Minor>
   </Student>
   <Student ID="S23451">
        <Name FirstName="Conor" LastName="Cole" />
        <Age>18</Age>
        <Year>Freshman</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">4641 Pearl Street</Street>
            <City>San Francisco</City>
            <State>CA</State>
        </Address>
        <Major>Microbiology</Major>
        <Minor>Public Health</Minor>
    </Student>
    <Student ID="S119323">
        <Name FirstName="Morgan" LastName="Yang" />
        <Age>21</Age>
        <Year>Senior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">30 Highland Road</Street>
            <City>Detriot</City>
            <State>MI</State>
        </Address>
        <Major>Political Science</Major>
   </Student>
   <Student ID="S201351">
        <Name FirstName="Salim" LastName="Copeland" />
        <Age>19</Age>
        <Year>Sophomore</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">3388 Moore Avenue</Street>
            <City>Fort Worth</City>
            <State>TX</State>
        </Address>
        <Major>Business</Major>
        <Minor>Japanese Language</Minor>
   </Student>
   <Student ID="S201351">
        <Name FirstName="Salim" LastName="Copeland" />
        <Age>20</Age>
        <Year>Sophomore</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">3388 Moore Avenue</Street>
            <City>Fort Worth</City>
            <State>TX</State>
        </Address>
        <Major>Business</Major>
        <Minor>Japanese Language</Minor>
    </Student>
    <Student ID="54600">
        <Name FirstName="Dania" LastName="Burt" />
        <Age>22</Age>
        <Year>Senior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">22 Angie Drive</Street>
            <City>Los Angeles</City>
            <State>CA</State>
        </Address>
        <Major>Mechanical Engineering</Major>
        <Minor>Architecture</Minor>
   </Student>
    <Student ID="453197">
        <Name FirstName="Rikki" LastName="Gunn" />
        <Age>21</Age>
        <Year>Junior</Year>
        <Address>
            <Street xmlns="https://www.mathworks.com">65 Decatur Lane</Street>
            <City>Trenton</City>
            <State>ME</State>
        </Address>
        <Major>Economics</Major>
        <Minor>Art History</Minor>
   </Student>
</Students>

从文件创建一个 XMLImportOptions 对象。将 VariableSelectors 的值指定为 //@FirstName 以选择要作为表变量导入的 FirstName 元素节点。

opts = xmlImportOptions("VariableSelectors","//@FirstName")
opts = 
  XMLImportOptions with properties:

   Replacement Properties:
                     MissingRule: "fill"
                 ImportErrorRule: "fill"
                RepeatedNodeRule: "addcol"

   Variable Import Properties: Set types by name using setvartype
                   VariableNames: "Var1"
                   VariableTypes: "char"
           SelectedVariableNames: "Var1"
                 VariableOptions: Show all 1 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
              VariableNamingRule: "preserve"

   Location Properties:
                   TableSelector: <missing>
                     RowSelector: <missing>
               VariableSelectors: "//@FirstName"
           VariableUnitsSelector: <missing>
    VariableDescriptionsSelector: <missing>
                RowNamesSelector: <missing>
            RegisteredNamespaces: [0x2 string]

使用 readtable 以及选项对象导入指定的变量。

T = readtable("students.xml",opts)
T=7×1 table
       Var1   
    __________

    {'Priya' }
    {'Conor' }
    {'Morgan'}
    {'Salim' }
    {'Salim' }
    {'Dania' }
    {'Rikki' }

使用 RegisteredNamespaces 名称-值参数将自定义 XML 命名空间前缀注册到输入文件中的现有命名空间 URL。

从 XML 文件创建一个 XMLImportOptions 对象。将 Street 元素节点的 XPath 表达式指定为 'VariableSelectors' 的值,并将前缀 myPrefix 注册到属于 Street 节点的 URL。

opts = detectImportOptions("students.xml","RegisteredNamespaces", ["myPrefix","https://www.mathworks.com"],...
    "VariableSelectors","//myPrefix:Street")
opts = 
  XMLImportOptions with properties:

   Replacement Properties:
                     MissingRule: "fill"
                 ImportErrorRule: "fill"
                RepeatedNodeRule: "addcol"

   Variable Import Properties: Set types by name using setvartype
                   VariableNames: "Street"
                   VariableTypes: "string"
           SelectedVariableNames: "Street"
                 VariableOptions: Show all 1 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
              VariableNamingRule: "preserve"

   Location Properties:
                   TableSelector: <missing>
                     RowSelector: <missing>
               VariableSelectors: "//myPrefix:Street"
           VariableUnitsSelector: <missing>
    VariableDescriptionsSelector: <missing>
                RowNamesSelector: <missing>
            RegisteredNamespaces: ["myPrefix"    "https://www.mathworks.com"]

使用 readtable 函数以及选项对象导入选定的变量。

T2 = readtable("students.xml",opts)
T2=7×1 table
          Street       
    ___________________

    "591 Spring Lane"  
    "4641 Pearl Street"
    "30 Highland Road" 
    "3388 Moore Avenue"
    "3388 Moore Avenue"
    "22 Angie Drive"   
    "65 Decatur Lane"  

输入参数

全部折叠

要读取的文件的名称,指定为字符向量或字符串标量。

根据文件的位置,filename 可以采用下列形式之一。

位置

形式

当前文件夹或 MATLAB® 路径上的文件夹

指定 filename 中文件的名称。

示例:'myFile.txt'

文件夹中的文件

如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则在 filename 中指定完整或相对路径名。

示例:'C:\myFolder\myFile.xlsx'

示例:'dataDir\myFile.txt'

Internet URL

如果文件指定为 Internet 统一资源定位器 (URL),则 filename 必须包含协议类型 'http://''https://'

示例:'http://hostname/path_to_file/my_data.csv'

远程位置

如果文件存储在远程位置,则 filename 必须包含用以下格式指定的文件的完整路径:

scheme_name://path_to_file/my_file.ext

根据远程位置,scheme_name 可以是下表中的值之一。

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasbwasbs
HDFS™hdfs

有关详细信息,请参阅处理远程数据

示例:'s3://bucketname/path_to_file/my_file.csv'

  • 如果 filename 包含文件扩展名,则导入函数基于扩展名确定文件格式。否则,您必须指定 'FileType' 名称-值对组参数以指示文件类型。

  • 在安装了 Microsoft® Excel® 软件的 Windows® 系统上,导入函数读取您的 Excel 版本可识别的任何 Excel 电子表格文件格式。

  • 如果您的系统没有 Windows 版 Excel 或者您正在使用 MATLAB Online™,则导入函数在 UseExcel 属性设置为 false 的情况下运行,并且只读取 .xls, .xlsx, .xlsm, .xltx, and .xltm 文件。

  • 对于分隔的文本文件,导入函数将文件中的空字段转换为 NaN(对于数值变量)或空字符向量(对于文本变量)。文本文件中的所有行必须有相同数量的分隔符。导入函数会忽略文件中的无用空白。

数据类型: char | string

文件导入选项,指定为 detectImportOptions 函数创建的 SpreadsheetImportOptionsDelimitedTextImportOptionsFixedWidthImportOptionsXMLImportOptions 对象。opts 对象包含控制数据导入过程的属性。有关每个对象的属性的详细信息,请参阅相应的对象页。

文件类型输出
电子表格文件SpreadsheetImportOptions 对象(仅对 SheetDataRangeVariableNames 属性可用)
文本文件DelimitedTextImportOptions 对象
等宽文本文件FixedWidthImportOptions 对象
XML 文件XMLImportOptions 对象

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'ReadVariableNames',false 指示文件的第一行与变量名称不对应。
所有支持的文件类型

全部折叠

文件类型,指定为以逗号分隔的对组,该对组由 'FileType' 和下列值之一组成。

文件的导入选项
'spreadsheet'

返回 SpreadsheetImportOptions 对象。

'text'

根据文本文件的布局,返回 DelimitedTextImportOptionsFixedWidthImportOptions 对象。

'delimitedtext'

返回 DelimitedTextImportOptions 对象。对于用分隔符分隔列的文本文件,请使用此选项。

'fixedwidth'

返回 FixedWidthImportOptions 对象。对于具有等宽列的文本文件,请使用此选项。

'xml'

返回 XMLImportOptions 对象。对 XML 文件使用此选项。

filename 不包含文件扩展名时,或当扩展名不是以下项之一时,请使用 'FileType' 名称-值对组参数:

  • .txt.dat.csv(适用于文本文件)

  • .xls.xlsb.xlsm.xlsx.xltm.xltx.ods(适用于电子表格文件)

  • .xml(适用于 XML 文件)

示例: 'FileType','text'

数据类型: char | string

读取第一列以作为行名称的指示符,指定为逗号分隔的对组,包含 'ReadRowNames'falsetrue01

指示符

说明

false

当要读取的区域第一列包含的是数据而不是表的行名称时使用。

true

当要读取的区域第一列包含表的行名称时使用。

未指定如果未指定,readtable 将假定为 false

注意:如果 'ReadVariableNames''ReadRowNames' 逻辑指示符都为 true,则 readtable 将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames 中的第一个维度名称。

如果除 opts 导入选项外您还指定了 ReadRowNames 参数,readtable 的行为将因您的指定而异:

  • 如果 ReadRowNamestrue,则通过使用导入选项对象的 RowNamesRangeRowNameColumn 属性从指定的文件中读取行名称。

  • 如果 ReadRowNamesfalse,则不导入行名称。

要作为空值处理的占位符文本,指定为逗号分隔的对组,其中包含 'TreatAsMissing' 和一个字符向量、字符向量元胞数组、字符串或字符串数组。与这些字符对应的表元素设置为 NaN

'TreatAsMissing' 仅应用于文件中的数值列,而 readtable 不接受数值文字,例如 '-99'

示例: 'TreatAsMissing','N/A''TreatAsMissing',"N/A" 将数值列内的 N/A 设置为 NaN

示例: 'TreatAsMissing',{'.','NA','N/A'}'TreatAsMissing',[".","NA","N/A"] 将数值列内的 .NAN/A 设置为 NaN

数据类型: char | string

导入的文本数据的类型,指定为以逗号分隔的对组,其中包含 'TextType''char''string' 中的任一项。

  • 'char' - 将文本数据作为字符向量导入 MATLAB 中。

  • 'string' - 将文本数据作为字符串数组导入 MATLAB 中。

示例: 'TextType','char'

导入的日期和时间数据的类型,指定为以逗号分隔的对组,其中包含 'DatetimeType' 和下列值之一:'datetime''text''exceldatenum'。值 'exceldatenum' 仅适用于电子表格文件,对文本文件无效。

导入的日期和时间数据的类型
'datetime'

MATLAB datetime 数据类型

有关详细信息,请参阅 datetime

'text'

如果将 'DatetimeType' 指定为 'text',则导入的日期和时间数据的类型取决于 'TextType' 参数中指定的值:

  • 如果 'TextType' 设置为 'char',则导入函数会以字符向量元胞数组的形式返回日期。

  • 如果 'TextType' 设置为 'string',则导入函数会以字符串数组形式返回日期。

'exceldatenum'

Excel 日期序列值

日期序列值是一个数字,它等于从给定的参照日期开始计算的天数。Excel 日期序列值与 MATLAB 日期序列值使用不同的参照日期。有关 Excel 日期的详细信息,请参阅 https://support.microsoft.com/en-us/kb/214330

数据类型: char | string

保留变量名称的标志,指定为以逗号分隔的对组,由 VariableNamingRule'modify''preserve' 组成。

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

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

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

数据类型: char | string

文本和电子表格文件

全部折叠

读取第一行以作为变量名称的指示符,指定为逗号分隔的对组,包含 'ReadVariableNames'truefalse10。如果未指定,readtable 将自动检测是否存在变量名称。

指示符

说明

true

当要读取的区域的第一行包含表格的变量名称时使用。readtable 将使用检测到的变量名称为 T 中的每列创建一个变量。

false

当要读取的区域的第一行包含表格中的数据时使用。readtable 将创建 'Var1',...,'VarN' 形式的默认变量名称,其中 N 是变量的数量。

未指定 如果未指定,readtable 将自动检测 truefalse,并进行相应的处理。

注意:如果 'ReadVariableNames''ReadRowNames' 逻辑指示符都为 true,则 readtable 将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames 中的第一个维度名称。

如果除 opts 导入选项外您还指定了 ReadVariableNames 参数,readtable 的行为将因您的指定而异:

  • 如果 ReadVariableNamestrue,则通过使用导入选项对象的 VariableNamesRangeVariableNamesLine 属性从指定的文件中读取变量名称。

  • 如果 ReadVariableNamesfalse,则从导入选项对象的 VariableNames 属性中读取变量名称。

仅限文本文件

全部折叠

字段分隔符,指定为由 'Delimiter' 以及一个字符向量、字符向量元胞数组或字符串组成的逗号分隔对组。使用任何有效字符(如逗号 ',' 或句点 '.')指定 Delimiter

下表列出了一些常用的字段分隔符。

设定符

字段分隔符

','

'comma'

逗号

' '

'space'

空格

'\t'

'tab'

制表符

';'

'semi'

分号

'|'

'bar'

垂直条

未指定

如果未指定,readtable 将自动检测分隔符。

要将连续分隔符视为单个分隔符,请将 Delimiter 指定为字符向量元胞数组。您还必须指定 MultipleDelimsAsOne 选项。

示例: 'Delimiter',',''Delimiter','comma'

数据类型: char | string | cell

文件开头要跳过的标题行数,指定为逗号分隔的对组,其中包含 'NumHeaderLines' 和一个正整数。如果未指定,readtable 将自动检测要跳过的行数。

数据类型: single | double

文件的列格式,指定为逗号分隔的对组,其中包含 'Format' 和一个字符向量或字符串标量(由一个或多个转换设定符组成)或 'auto'。转换设定符与 textscan 函数接受的设定符相同。

指定该格式可以显著加快一些大文件的处理速度。如果不为 Format 指定一个值,则 readtable 将使用 %q 解释非数值列。%q 设定符会读取文本并在适当情况下忽略双引号 (")。

  • 如果您没有指定 'Format' 名称-值对组,则 readtable 函数的行为就像您使用了 detectImportOptions 函数的结果来导入数据一样。有关此行为导致的结果的详细信息,请参阅兼容性注意事项

  • 如果您指定 'Format','auto',则创建的变量是 double 数组、字符向量元胞数组或 datetime 数组,具体取决于数据。如果整列都是数值,则将变量作为 double 数组导入。如果一列中有任一元素不是数值,则将这些变量作为字符向量元胞数组导入,或作为 datetime 数组导入(如果值表示日期和时间)。

数据类型: char | string

被分隔的文本文件中空数值字段的返回值,指定为由 'EmptyValue' 和一个标量组成的逗号分隔对组。

多分隔符处理,指定为由 'MultipleDelimsAsOne'true/false 组成的逗号分隔对组。如果为 true,则导入函数将连续分隔符当作一个分隔符处理。由空白分隔的重复分隔符也被当作一个分隔符处理。您还必须指定 Delimiter 选项。

示例: 'MultipleDelimsAsOne',1

确定数据串联的逻辑指示符,指定为由 'CollectOutput'true/false 组成的逗号分隔对组。如果为 true,则导入函数会将同一 MATLAB 基础类的连续输出元胞串联为单个数组。

用于指定要忽略的文本的符号,指定为逗号分隔的对组,其中包含 'CommentStyle' 和一个字符向量、字符向量元胞数组、字符串或字符串数组。

例如,指定一个字符(如 '%')以忽略同一行上此符号后面的文本。指定一个包含两个字符向量的元胞数组(如 {'/*','*/'}),以忽略这些序列之间的任何文本。

MATLAB 仅检查位于每个字段开头而不是字段中的注释。

示例: 'CommentStyle',{'/*','*/'}

数据类型: char | string

指数字符,指定为由 'ExpChars' 和一个字符向量或字符串组成的逗号分隔对组。默认的指数字符为 eEdD

数据类型: char | string

行尾字符,指定为由 'LineEnding' 和一个字符向量或字符串组成的逗号分隔对组。该字符向量必须为 '\r\n',或须指定单个字符。常用的行尾字符是换行符 ('\n') 或回车符 ('\r')。如果您指定 '\r\n',则导入函数会将 \r\n 以及两者的组合 (\r\n) 视为行尾字符。

默认的行尾序列是 \n\r\r\n,具体取决于您的文件的内容。

如果文件最后一行的结尾有缺失值和行尾序列,则导入函数会对这些字段返回空值。这样可确保输出元胞数组 C 中的各个元胞的大小相同。

示例: 'LineEnding',':'

数据类型: char | string

用于读取日期的区域设置,指定为逗号分隔的对组,其中包含 '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''system' 或标准字符编码方案名称。如果您没有指定任何编码,则 readtable 函数在读取文件时将使用自动字符集检测来确定编码。

如果除导入选项外您还指定了 'Encoding' 参数,readtable 函数将使用为 'Encoding' 指定的值,而覆盖导入选项中定义的编码方案。

示例: 'Encoding','UTF-8' 使用 UTF-8 作为编码。

示例: 'Encoding','system' 使用系统默认编码。

数据类型: char | string

来自文本文件的持续时间数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'DurationType''duration''text'

导入的持续时间数据的类型
'duration'

MATLAB duration 数据类型

有关详细信息,请参阅 duration

'text'

如果将 'DurationType' 指定为 'text',则导入的持续时间数据的类型取决于 'TextType' 参数中指定的值:

  • 如果 'TextType''char',则导入函数会以字符向量元胞数组的形式返回持续时间数据。

  • 如果 'TextType''string',则导入函数会以字符串数组的形式返回持续时间数据。

数据类型: char | string

十六进制数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'HexType' 和下表中列出的值之一。

输入文件以文本形式表示十六进制值,使用 0x0X 作为前缀,以字符 0-9a-fA-F 作为数字。(大写和小写字母表示相同的数字 - 例如,'0xf''0xF' 都表示 15。)

导入函数将十六进制值转换为由 'HexType' 的值指定的数据类型。

'HexType' 的值

输出表变量的数据类型

'auto'

自动检测到的数据类型

'text'

未更改的输入文本

'int8'

8 位有符号整数

'int16'

16 位有符号整数

'int32'

32 位有符号整数

'int64'

64 位有符号整数

'uint8'

8 位无符号整数

'uint16'

16 位无符号整数

'uint32'

32 位无符号整数

'uint64'

64 位无符号整数

示例: 'HexType','uint16' 将输出表中表示十六进制值的文本(如 '0xFF')转换为 16 位无符号整数(如 255)。

数据类型: char | string

二进制数据的输出数据类型,指定为以逗号分隔的对组,其中包含 'BinaryType' 和下表中列出的值之一。

输入文件以文本形式表示二进制值,使用 0b0B 作为前缀,以字符 01 作为数字。

导入函数将二进制值转换为由 'BinaryType' 的值指定的数据类型。

'BinaryType' 的值

输出表变量的数据类型

'auto'

自动检测到的数据类型

'text'

未更改的输入文本

'int8'

8 位有符号整数

'int16'

16 位有符号整数

'int32'

32 位有符号整数

'int64'

64 位有符号整数

'uint8'

8 位无符号整数

'uint16'

16 位无符号整数

'uint32'

32 位无符号整数

'uint64'

64 位无符号整数

示例: 'BinaryType','uint16' 将输出表中表示二进制值的文本(如 '0b11111111')转换为 16 位无符号整数(如 255)。

数据类型: char | string

从数值变量中删除非数值字符,指定为逻辑值 truefalse

示例: 如果名称-值对组指定为 'TrimNonNumeric',true,则导入函数将 '$500/-' 读取为 500

数据类型: logical

仅限电子表格文件

全部折叠

要读取的工作表,指定为逗号分隔的对组,其中包含 '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 的方式 说明
  

'Cell'[row col]

起始单元格

将数据的起始单元格指定为字符向量、字符串标量或二元素数值向量。

  • 字符向量或字符串标量,其中包含使用 Excel A1 表示法的列字母和行号。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

  • 二元素数值向量,形式为 [row col],表示起始行和列。

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

例如:'A5'[5 1]

'Corner1:Corner2'

矩形范围

使用语法 'Corner1:Corner2' 指定该范围,其中 Corner1Corner2 是定义区域的两个对角。例如,'D2:H4' 表示工作表上两个角落 D2H4 之间的 3×5 矩形区域。'Range' 名称-值对组参数不区分大小写,并使用 Excel A1 引用样式(请参阅 Excel 帮助)。

示例: 'Range','Corner1:Corner2'

''

未指定或为空

如果未指定,readtable 将自动检测使用范围。

示例: 'Range',''

注意:使用范围是指电子表格中实际包含数据的矩形部分。readtable 通过删减不包含数据的前导和尾随的行和列,自动检测使用范围。只包含空白的文本被视为数据,并会在使用范围内被捕获。

'Row1:Row2'

行范围

您可以通过使用 Excel 行标志符指定开始行和结束行来标识范围。然后,readtable 自动在指定的行中检测使用的列范围。例如,readtable 将范围设定 '1:7' 解释为一个指令,用于读取第 1 行到第 7 行(包括这两行)使用范围内的所有列。

示例: 'Range','1:7'

'Column1:Column2'

列范围

您可以通过使用 Excel 列标志符指定开始列和结束列来标识范围。然后,readtable 自动在指定的列中检测使用的行范围。例如,readtable 将范围设定 'A:F' 解释为一个指令,用于读取 A 到 F 列(包括这两列)使用范围内的所有行。

示例: 'Range','A:F'

'NamedRange'

Excel 中的命名范围

在 Excel 中,您可以创建名称来标识电子表格中的范围。例如,您可以选择电子表格的一个矩形部分,并将其命名为 'myTable'。如果电子表格中存在此类命名范围,则 readtable 可以使用它的名称来读取该范围。

示例: 'Range','myTable'

示例: 'Range', 'A1:F10'

示例: 'Range', "A1:F10"

数据类型: char | string

用于在读取电子表格数据时启动 Windows 版 Microsoft Excel 实例的标志,指定为逗号分隔的对组,包含 'UseExcel'truefalse

您可以将 'UseExcel' 参数设置为下列值之一:

  • true - 导入函数在读取文件时启动 Microsoft Excel 的实例。

  • false - 导入函数在读取文件时不启动 Microsoft Excel 的实例。在此模式下操作时,导入函数功能支持的文件格式和交互式功能(例如公式和宏)有所不同。

UseExcel

true

false

支持的文件格式

.xls, .xlsx, .xlsm, .xltx, .xltm, .xlsb, .ods

.xls, .xlsx, .xlsm, .xltx, .xltm

支持交互功能,例如公式和宏

从 Windows 平台上的电子表格文件中读取时,如果您想启动 Microsoft Excel 实例,则将 'UseExcel' 参数设置为 true

仅 XML 文件

全部折叠

属性后缀,指定为逗号分隔的对组,包含 'AttributeSuffix' 和一个字符向量或字符串标量。此参数指定读取函数追加到与输入 XML 文件中的属性对应的所有表变量的后缀。如果未指定 'AttributeSuffix',则读取函数默认将后缀 'Attribute' 附加到与输入 XML 文件中的属性对应的所有变量名称。

示例: 'AttributeSuffix','_att'

导入属性,指定为逗号分隔的对组,包含 'ImportAttributes'1 (true) 或 0 (false)。如果指定 false,则读取函数不会将输入文件中的 XML 属性作为输出表中的变量导入。

示例: 'ImportAttributes',false

表行 XML 节点名称,指定为逗号分隔的对组,包含 'RowNodeName' 和一个字符向量或字符串标量。此参数指定界定输出表行的 XML 节点名称。

示例: 'RowNodeName','XMLNodeName'

表行 XPath 表达式,指定为字符向量或字符串标量,读取函数使用它来选择输出表的各个行。您必须将 RowSelector 指定为有效的 XPath 版本 1.0 表达式。

示例: 'RowSelector','/RootNode/ChildNode'

表变量 XML 节点名称,指定为以逗号分隔的对组,包含 'VariableNodeNames' 和一个字符向量元胞数组或字符串数组。此参数指定读取函数用于标识输出表中作为变量读取的 XML 节点的 XML 节点名称。

示例: 'VariableNodeNames',{'XMLNodeName1','XMLNodeName2'}

示例: 'VariableNodeNames',"XMLNodeName"

示例: 'VariableNodeNames',["XMLNodeName1","XMLNodeName2"]

表变量 XPath 表达式,指定为字符向量元胞数组或字符串数组,读取函数使用它来选择表变量。您必须将 VariableSelectors 指定为有效的 XPath 版本 1.0 表达式。

示例: 'VariableSelectors',{'/RootNode/ChildNode'}

示例: 'VariableSelectors',"/RootNode/ChildNode"

示例: 'VariableSelectors',["/RootNode/ChildNode1","/RootNode/ChildNode2"]

表 XML 节点名称,指定为逗号分隔的对组,其中包含 'TableNodeName' 和一个字符向量或字符串标量。此参数指定读取函数应读取到表的输入结构体中的节点。

示例: 'TableNodeName','NodeName'

表数据 XPath 表达式,指定为字符向量或字符串标量,读取函数使用它来选择输出表数据。您必须将 TableSelector 指定为有效的 XPath 版本 1.0 表达式。

示例: 'TableSelector','/RootNode/ChildNode'

变量单位 XPath,指定为字符向量或字符串标量,读取函数使用它来选择表变量单位。您必须将 VariableUnitsSelector 指定为有效的 XPath 版本 1.0 表达式。

示例: 'VariableUnitsSelector','/RootNode/ChildNode'

变量描述 XPath 表达式,指定为字符向量或字符串标量,读取函数使用它来选择表变量描述。您必须将 VariableDescriptionsSelector 指定为有效的 XPath 版本 1.0 表达式。

示例: 'VariableDescriptionsSelector','/RootNode/ChildNode'

表行名称 XPath 表达式,指定为字符向量或字符串标量,读取函数使用它来选择表行的名称。您必须将 RowNamesSelector 指定为有效的 XPath 版本 1.0 表达式。

示例: 'RowNamesSelector','/RootNode/ChildNode'

处理表的给定行中重复 XML 节点的过程,指定为 'addcol''ignore''error'

重复节点规则

行为

'addcol'

在表中的变量标题下为重复节点添加列。将 'RepeatedNodeRule' 的值指定为 'addcol' 不会在表中为重复节点创建单独变量。

'ignore'

跳过导入重复节点。

'error'显示错误消息并中止导入操作。

示例: 'RepeatedNodeRule','ignore'

注册的 XML 命名空间前缀集,指定为由 RegisteredNamespaces 和前缀数组组成的以逗号分隔的对组。读取函数在计算 XML 文件的 XPath 表达式时使用这些前缀。将命名空间前缀及其关联的 URL 指定为 N×2 字符串数组。RegisteredNamespaces 还可以用于计算由选择器名称-值参数(例如 readstructStructSelectorreadtablereadtimetableVariableSelectors)指定的 XPath 表达式。

默认情况下,读取函数会自动检测要注册以用于 XPath 计算的命名空间前缀,但您也可以使用 RegisteredNamespaces 名称-值参数注册新命名空间前缀。当 XML 节点有命名空间 URL 但在 XML 文件中没有声明的命名空间前缀时,您可以注册新命名空间前缀。

例如,对名为 example.xml 的不包含命名空间前缀的 XML 文件计算 XPath 表达式。将 'RegisteredNamespaces' 指定为 [“myprefix”, “https://www.mathworks.com”] 以将前缀 myprefix 赋给 URL https://www.mathworks.com

T = readtable("example.xml", "VariableSelector", "/myprefix:Data",...
 "RegisteredNamespaces", [“myprefix”, “https://www.mathworks.com”])

示例: 'RegisteredNamespaces',[“myprefix”, “https://www.mathworks.com”]

输出参数

全部折叠

输出表,以表形式返回。该表可以存储元数据,比如说明、变量单位、变量名称和行名称。有关详细信息,请参阅 table 的“属性”部分。

提示

  • XLSX 格式的大文件有时会加载缓慢。为了获得更好的导入和导出性能,Microsoft 推荐您使用 XLSB 格式。

  • XPath 选择器名称-值参数(例如 RowSelectorVariableSelector)支持以下 XPath 语法。

    • 要选择其名称与您要选择的节点匹配的每个节点,而无论它在文档中的位置如何,请使用 "//myNode" 语法。您可以使用 "//myNode" 省略在要选择的节点前面的 XPath 表达式。

    • 要读取文件中一个父节点下的几个同级节点之一,您可以指定 ChildNode[n],其中 n 对应于要进行索引的同级节点。例如,路径 "/RootNode/ChildNode[2]" 选择其父元素为 RootNode 的第二个 ChildNode 元素。

    • 要读取属于输入 XML 文件中某元素节点的属性的值,请在该属性的名称前指定 @。例如,"/RootNode/ChildNode[2]/@AttributeName" 选择属于其父元素为 RootNode 的第二个 ChildNode 元素的属性 AttributeName

兼容性考虑

全部展开

R2020a 中的行为有变化

在 R2013b 中推出