主要内容

detectImportOptions

基于文件内容生成导入选项

说明

opts = detectImportOptions(filename) 在文件中找到一个表并返回其导入选项。您可以修改选项对象,并将它与 readtable 一起使用以控制 MATLAB® 如何导入表格数据。返回的选项类型取决于文件扩展名。

示例

opts = detectImportOptions(filename,Name=Value) 使用一个或多个名称-值参量指定其他选项。例如,您可以指定要导入的变量和行。

示例

示例

全部折叠

使用导入选项对象配置 readtable 解释文件的方式。例如,使用导入选项对象仅从电子表格文件中读取指定的变量。

首先,通过使用 detectImportOptions 检测电子表格文件的各个方面(包括变量名称和类型),从文件创建一个导入选项对象。在本例中,detectImportOptions 会创建一个 SpreadsheetImportOptions 对象。

opts = detectImportOptions("patients.xls")
opts = 
  SpreadsheetImportOptions with properties:

   Sheet Properties:
                        Sheet: ''

   Replacement Properties:
                  MissingRule: 'fill'
              ImportErrorRule: 'fill'
         MergedCellColumnRule: 'placeleft'
            MergedCellRowRule: 'placetop'

   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

通过修改导入选项对象来指定要导入的变量。然后,使用 readtable 和导入选项对象导入指定的变量。显示表的前 5 行。

opts.SelectedVariableNames = ["Systolic","Diastolic"];
T = readtable("patients.xls",opts);
T(1:5,:)
ans=5×2 table
    Systolic    Diastolic
    ________    _________

      124          93    
      109          77    
      125          83    
      117          75    
      122          80    

使用导入选项对象配置 readtable 解释文件的方式。例如,使用导入选项对象仅读取文本文件的一部分内容。

首先,使用 detectImportOptions 创建一个导入选项对象来检测文本文件的各个方面,包括变量名称和类型、分隔符以及空白字符。在本例中,detectImportOptions 会创建一个 DelimitedTextImportOptions 对象。

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

通过修改导入选项对象来指定要导入的变量子集。然后,使用 readtable 和导入选项对象导入数据子集。

opts.SelectedVariableNames = ["TaxiIn","TaxiOut"];
T = readtable("airlinesmall.csv",opts);

检测 Microsoft Word 文档文件的导入选项,指定要导入的表,然后读取数据。

文件 MaintenanceReport.docx 包含两个表。第二个表的最后一行包含一个其合并列与表变量不匹配的单元格。

使用 detectImportOptions 函数检测导入选项。通过将 TableIndex 设置为 2 来指定从第二个表中读取。

filename = "MaintenanceReport.docx";
opts = detectImportOptions(filename,'TableIndex',2)
opts = 
  WordDocumentImportOptions with properties:

   Replacement Properties:
                MissingRule: "fill"
            ImportErrorRule: "fill"
               EmptyRowRule: "skip"
       MergedCellColumnRule: "placeleft"
          MergedCellRowRule: "placetop"
           ExtraColumnsRule: "addvars"

   Variable Import Properties: Set types by name using setvartype
              VariableNames: ["Description"    "Category"    "Urgency"    "Resolution"    "Cost"]
              VariableTypes: ["string"    "string"    "string"    "string"    "string"]
      SelectedVariableNames: ["Description"    "Category"    "Urgency"    "Resolution"    "Cost"]
            VariableOptions: Show all 5 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
         VariableNamingRule: "preserve"

   Location Properties:
              TableSelector: "(//w:tbl)[2]"
                   DataRows: [2 Inf]
           VariableNamesRow: 1
           VariableUnitsRow: 0
    VariableDescriptionsRow: 0
             RowNamesColumn: 0

要跳过读取包含具有合并列的单元格的行,请将 MergedCellColumnRule 属性设置为 'omitrow'

opts.MergedCellColumnRule = 'omitrow';

使用带有选项对象的 readtable 函数从 Microsoft Word 文档文件中读取表。

filename = "MaintenanceReport.docx";
T = readtable(filename,opts)
T=3×5 table
                                 Description                                       Category          Urgency         Resolution          Cost  
    _____________________________________________________________________    ____________________    ________    __________________    ________

    "Items are occasionally getting stuck in the scanner spools."            "Mechanical Failure"    "Medium"    "Readjust Machine"    "$45"   
    "Loud rattling and banging sounds are coming from assembler pistons."    "Mechanical Failure"    "Medium"    "Readjust Machine"    "$35"   
    "There are cuts to the power when starting the plant."                   "Electronic Failure"    "High"      "Full Replacement"    "$16200"

检测 HTML 文件的导入选项,指定要导入的表,然后读取数据。

从包含文本“readtable”的 URL https://www.mathworks.com/help/matlab/text-files.html 中检测第一个表的导入选项。使用 detectImportOptions 函数检测导入选项,并使用 XPath 查询 "//TABLE[contains(.,'readtable')]" 指定要读取的表。通过将 ReadVariableNames 设置为 false 来指定不读取变量名称。

url = "https://www.mathworks.com/help/matlab/text-files.html";
opts = detectImportOptions(url,'TableSelector',"//TABLE[contains(.,'readtable')]",'ReadVariableNames',false)
opts = 
  HTMLImportOptions with properties:

   Replacement Properties:
                MissingRule: "fill"
            ImportErrorRule: "fill"
               EmptyRowRule: "skip"
       MergedCellColumnRule: "placeleft"
          MergedCellRowRule: "placetop"
           ExtraColumnsRule: "addvars"

   Variable Import Properties: Set types by name using setvartype
              VariableNames: ["Var1"    "Var2"]
              VariableTypes: ["string"    "string"]
      SelectedVariableNames: ["Var1"    "Var2"]
            VariableOptions: Show all 2 VariableOptions 
	Access VariableOptions sub-properties using setvaropts/getvaropts
         VariableNamingRule: "preserve"

   Location Properties:
              TableSelector: "//TABLE[contains(.,'readtable')]"
                   DataRows: [1 Inf]
           VariableNamesRow: 0
           VariableUnitsRow: 0
    VariableDescriptionsRow: 0
             RowNamesColumn: 0

使用 readtable 函数读取表。

T = readtable(url,opts)
T=4×2 table
         "readtable"        "Create table from file"
        "writetable"           "Write table to file"
     "readtimetable"    "Create timetable from file"
    "writetimetable"       "Write timetable to file"

通过指定导入选项将文本数据作为字符串数据类型导入。

为文件创建选项对象。

opts = detectImportOptions('outages.csv');

使用 readtable 指定要导入的变量,然后显示摘要。所选变量的数据类型是 char

opts.SelectedVariableNames = {'Region','Cause'};
T = readtable('outages.csv',opts);
summary(T)
T: 1468×2 table

Variables:

    Region: cell array of character vectors
    Cause: cell array of character vectors

Statistics for applicable variables:

              NumMissing

    Region        0     
    Cause         0     

将文本数据作为 string 数据类型导入,然后通过指定 TextType 名称-值对组创建导入选项。

opts = detectImportOptions('outages.csv','TextType','string');

使用 readtable 指定要导入的变量,然后显示摘要。所选变量的数据类型现在是 string

opts.SelectedVariableNames = {'Region','Cause'};
T = readtable('outages.csv',opts);
summary(T)
T: 1468×2 table

Variables:

    Region: string
    Cause: string

Statistics for applicable variables:

              NumMissing

    Region        0     
    Cause         0     

将 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>
</Students>

首先,使用 detectImportOptions 创建一个 XMLImportOptions 对象来检测 XML 文件的各个方面。通过将 VariableSelectors 名称-值参量指定为 Street 元素节点的 XPath 表达式,仅将街道名称读入表中。通过设置 RegisteredNamespaces 名称-值参量,将自定义命名空间前缀注册到现有命名空间 URL。

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

然后,使用 readtable 和导入选项对象导入指定的变量。

T = readtable("students.xml",opts)
T=3×1 table
          Street       
    ___________________

    "591 Spring Lane"  
    "4641 Pearl Street"
    "30 Highland Road" 

输入参数

全部折叠

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

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

位置

形式

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

指定 filename 中文件的名称。

示例:'myFile.txt'

文件夹中的文件

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

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

示例:'\imgDir\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 存储wasb, wasbs
HDFS™hdfs

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

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

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

detectImportOptions 函数支持以下文件扩展名:.txt.dat.csv.xls.xlsb.xlsm.xlsx.xltm.xltx.ods.json.xml.docx.html.xhtml.htm.zip.gz.tar

压缩文件格式作为文件读取。存档文件格式被视为文件夹。例如,函数将 mydatafiles.zip 解释为文件夹,因此必须在其中指定一个文件,如 mydatafiles.zip/file1.xlsx。对于以 .gz 扩展名结尾的文件,函数通过使用 .gz 之前的扩展名来确定文件格式。例如,mydata.csv.gz 作为 CSV 文件读取。 (自 R2025a 起)

只有在使用了 Windows® 版 Excel® 的平台上才支持文件扩展台 .xlsb.ods

数据类型: char | string

名称-值参数

全部展开

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: detectImportOptions(filename,FileType="spreadsheet") 指示指定的文件是电子表格。

数据和标题位置

全部展开

文件开头要跳过的标题行数,指定为非负整数。如果未指定此名称-值参量,detectImportOptions 会自动检测要跳过的行数。

变量名称和数据的读取从第一个非标题行开始。

数据类型: single | double

要从文件中读取的范围,指定为以下形式之一的字符串标量、字符向量或数值向量。

指定 Range 的方式 描述

"Cell"[row col]

起始元素

将数据的起始元素指定为以下值之一:

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

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

detectImportOptions 根据起始元素自动检测数据范围,从起始元素开始导入,并在到达最后一个空行时结束。

示例:"A5"

示例:[5 1]

"Corner1:Corner2"[r1 c1 r2 c2]

矩形范围

将数据的矩形范围指定为以下值之一:

  • "Corner1:Corner2" 形式的字符串标量或字符向量,其中 Corner1Corner2 是定义区域的两个对角。例如,"D2:H4" 表示文件中两个角落 D2H4 之间的 3×5 矩形区域。Range 名称-值参量使用电子表格 A1 表示法,不区分大小写。

  • [r1 c1 r2 c2] 形式的四元素数值向量,指示起始行、起始列、结束行和结束列。例如,[2 3 15 13] 表示文件中第 2 行到第 15 行和第 3 列到第 13 列之间的 14×11 矩形区域。

detectImportOptions 仅读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失值导入。

列数必须与 ExpectedNumVariables 名称-值参量中的指定的数字匹配。

示例:"D2:H4"

示例:[2 3 15 13]

"Row1:Row2"

行范围

使用行号以 "Row1:Row2" 形式的字符串标量或字符向量指定起始行和结束行。

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

示例:"1:7" 读取第 1 行到第 7 行(包括这两行)中的所有列。

"Column1:Column2"

列范围

使用 A1 表示法的列字母以 "Column1:Column2" 形式的字符串标量或字符向量指定起始列和结束列。

detectImportOptions 根据指定的列范围自动检测行范围,从第一个非空行开始读取,一直到数据的最后。

列数必须与 ExpectedNumVariables 名称-值参量中的指定的数字匹配。

示例:"A:F" 读取 A 到 F 列(包括这两列)中的所有行。

"NamedRange"

命名范围(仅限电子表格)

您可以创建名称来标识电子表格中的范围。例如,您可以选择电子表格的一个矩形部分,并将其命名为 "myTable"。如果电子表格具有命名范围,则 detectImportOptions 可以使用其名称读取该范围。

""

未指定或为空

如果未指定此名称-值参量,detectImportOptions 会自动检测使用的范围。

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

数据的位置,指定为以下形式之一的字符串标量、字符向量、正整数或 N×2 正整数数组。

指定 DataRange 的方式描述

"Cell"

起始单元格

使用 A1 表示法将数据的起始单元格指定为包含列字母和行号的字符串标量或字符向量。例如,A5 是第 A 列与第 5 行相交处的单元格的标识符。

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

示例:"A5"

n

起始行

使用正行索引指定包含数据的起始行。

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

示例:5

"Corner1:Corner2"

矩形范围

使用 "Corner1:Corner2" 形式指定该范围,其中 Corner1Corner2 是定义区域的两个对角。

detectImportOptions 仅读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失值导入。

示例:"A5:K50"

"Row1:Row2"

行范围

使用行号以 "Row1:Row2" 形式的字符串标量或字符向量指定起始行和结束行。

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

示例:"5:500"

"Column1:Column2"

列范围

使用 A1 表示法的列字母以 "Column1:Column2" 形式的字符串标量或字符向量指定起始列和结束列。

detectImportOptions 根据指定的列范围自动检测行范围,从第一个非空行开始读取,一直到数据的最后。

示例:"A:K"

[n1 n2; n3 n4; ...]

多个行范围

使用包含 N 个不同行范围的 N×2 数组指定多个行范围。

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

  • 按升序指定行范围。

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

仅支持对数值数组中的最后一个行范围使用 Inf

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

""

不读取任何数据。

示例:""

要读取的工作表,指定为正整数(指示工作表索引)或者指定为字符串标量或字符向量(包含工作表名称)。默认情况下,detectImportOptions 读取第一个工作表。

如果指定字符串标量或字符向量,则工作表名称不能包含冒号 (:)。要确定电子表格文件中工作表的名称,请使用 sheets = sheetnames(filename)。有关详细信息,请参阅 sheetnames

示例: 2

示例: "MySheetName"

要从一个包含多个表的文件中读取的表的索引,指定为正整数。默认情况下,detectImportOptions 读取第一个表。

如果指定 TableIndexdetectImportOptions 函数会自动将 TableSelector 设置为等效的 XPath 表达式。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要读取的表,指定为字符串标量或字符向量。如果未指定此名称-值参量,detectImportOptions 会检测表的位置。

JSON 文件

将要读取的表指定为包含 JSON 指针的字符串标量或字符向量。您必须将 TableSelector 指定为有效的 RFC 6901 JSON 指针。有关详细信息,请参阅 JSON 指针的 IETF 定义

空字符串 ("") 表示整个 JSON 文件。

示例:TableSelector="/engineID"

XML、Microsoft Word 和 HTML 文件

将要读取的表指定为包含 XPath 表达式的字符串标量或字符向量。您必须将 TableSelector 指定为有效的 XPath 版本 1.0 表达式。

选取操作语法
选择其名称与您要选择的节点匹配的每个节点,而无论它在文档中的位置如何。在名称前加两个正斜杠 (//) 前缀。
选择属于元素节点的属性的值。在属性前加 at 符号 (@) 前缀。
在一组节点中选择一个特定节点。在方括号 ([]) 中提供要选择的节点的索引。
指定运算的优先级。在要首先计算的表达式前后添加圆括号。

示例:TableSelector="//table[1]"

要读取的表数据的 JSON 键名称或 XML 节点名称,指定为字符串标量或字符向量。

跨列合并单元格的规则,指定为下表中的值之一。

导入规则行为
"placeleft"

将数据放在最左侧单元格中,并基于 MissingRule 的值用 FillValue 属性的内容填充其余单元格。如果 MissingRule"fill"(默认值),则使用 FillValue 填充单元格。

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"placeright"

将数据放在最右侧单元格中,并基于 MissingRule 的值用 FillValue 属性的内容填充其余单元格。如果 MissingRule"fill"(默认值),则使用 FillValue 填充单元格。

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"duplicate"

在所有单元格中复制数据。

"omitrow"忽略出现合并单元格的行。
"error"显示错误消息并取消导入操作。

跨行合并单元格的规则,指定为下表中的值之一。

导入规则行为
"placetop"

将数据放在顶部单元格中,并基于 MissingRule 的值用 FillValue 属性的内容填充其余单元格。如果 MissingRule"fill"(默认值),则使用 FillValue 填充单元格。

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"placebottom"

将数据放在底部单元格中,并基于 MissingRule 的值用 FillValue 属性的内容填充其余单元格。如果 MissingRule"fill"(默认值),则使用 FillValue 填充单元格。

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"duplicate"

在所有单元格中复制数据。

"omitvar"省略出现合并单元格的变量。
"error"显示错误消息并取消导入操作。

变量

全部展开

读取变量名称,指定为数值或逻辑值 1 (true) 或 0 (false)。如果未指定此名称-值参量,detectImportOptions 会自动检测是否存在变量名称。

描述

true

读取变量名称。

false

不读取变量名称。创建 "Var1",...,"VarN" 形式的默认变量名称,其中 N 是变量的数量。

未指定

自动检测区域是否包含变量名称。

对于文本、电子表格、Microsoft Word 和 HTML 文件,会在标题行后检测变量名称。对于 JSON 文件,从对象键名称中检测变量名称 (自 R2026a 起)。对于 XML 文件,从元素节点和属性名称中检测变量名称。

如果 ReadVariableNamesReadRowNames 都为 true,则 detectImportOptions 将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames 中的第一个维度名称。

变量名称的规则,指定为以下值之一:

  • "modify" - 将无效变量名称(由 isvarname 函数确定)转换为有效的 MATLAB 标识符。此值是文本文件和电子表格文件的默认值。

  • "preserve" - 保留作为无效 MATLAB 标识符的变量名称,如包含空白和非 ASCII 字符的变量名称。此值是 JSON、XML、Microsoft Word 和 HTML 文件的默认值。

变量名称和行名称可以不是有效的 MATLAB 标识符。它们可以包含任何字符,包括空格或非 ASCII 字符。此外,它们可以由任何字符(而不仅仅是字母)开头。

预期的变量数,指定为非负整数。如果未指定此名称-值参量,detectImportOptions 会自动检测变量数。

变量名称的位置,指定为非负整数。

如果 VariableNamesLine0,则 detectImportOptions 不会检测变量名称。否则,detectImportOptions 从指定行中检测变量名称。

如果存在变量名称,且 VariableNamesLineReadVariableNames 均未指定,则 detectImportOptions 检测哪一行包含变量名称并导入它们。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

变量名称的位置,指定为以下形式之一的字符串标量、字符向量或正整数。

指定 VariableNamesRange 的方式描述

"Cell"

起始单元格

使用 A1 表示法将变量名称的起始单元格指定为包含列字母和行号的字符串标量或字符向量。

示例:"A5" 标识列 A 和行 5 相交处的单元格。

"Corner1:Corner2"

矩形范围

使用 "Corner1:Corner2" 形式指定该范围,其中 Corner1Corner2 是定义变量名称区域的两个对角。

范围只能跨一行。

示例:"A5:K5"

n

数值索引

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

示例:5

"Row1:Row2"

行范围

使用 "Row1:Row2" 形式指定该范围,其中 Row1Row2 是相同的行索引。

变量名称必须在一行中。

示例:"5:5"

""

未指定或为空

指示没有变量名称。

示例:""

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

变量名称的位置,指定为非负整数。

如果 VariableNamesRow0,则 detectImportOptions 不会检测变量名称。否则,detectImportOptions 从指定行中检测变量名称。

如果未指定 VariableNamesRow,且 ReadVariableNamestrue(默认值),则 detectImportOptions 导入变量名称。如果两者均未指定,则 detectImportOptions 检测是否有一行包含要导入的变量名称。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要作为表变量读取的 JSON 键名称和 XML 节点名称,指定为字符串数组、字符向量或字符向量元胞数组。如果嵌套节点具有相同的名称,则 VariableNodeNames 选择位于顶层的节点。

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

要读取的变量,指定为字符串数组、字符向量或字符向量元胞数组。如果未指定此名称-值参量,detectImportOptions 会检测变量的位置。

JSON 文件

(自 R2026a 起)

将要读取的变量指定为包含 JSON 指针的字符串数组、字符向量或字符向量元胞数组。您必须将 VariableSelectors 指定为有效的 RFC 6901 JSON 指针。有关详细信息,请参阅 JSON 指针的 IETF 定义

VariableSelectors 值中的星号 (*) 表示选择该对应级别的整个数组。

要将键读取为变量,请在 VariableSelectors 中包含字符串 "Keys"。例如,VariableSelectors=["Keys" "/ID" "/Name/FirstName"]

空字符串 ("") 表示整个 JSON 文件。

示例:VariableSelectors="/enginetemp"

示例:VariableSelectors=["/enginetemp1","/enginetemp2"]

XML 文件

将要读取的变量指定为包含 XPath 表达式的字符串数组、字符向量或字符向量元胞数组。您必须将 VariableSelectors 指定为有效的 XPath 版本 1.0 表达式。例如,假设您要导入 XML 文件 myFile.xml,该文件具有以下结构:

<data>
    <table category="ones">
        <var>1</var>
        <var>2</var>
    </table>
    <table category="tens">
        <var>10</var>
        <var>20</var>
    </table>
</data>

选取操作语法示例
选择其名称与您要选择的节点匹配的每个节点,而无论它在文档中的位置如何。在名称前加两个正斜杠 (//) 前缀。

选择每个名为 var 的节点。

opts = detectImportOptions("myFile.xml",VariableSelectors="//var")
选择属于元素节点的属性的值。在属性前加 at 符号 (@) 前缀。

选择 table 节点的 category 属性的值。

opts = detectImportOptions("myFile.xml",VariableSelectors="//table/@category")
在一组节点中选择一个特定节点。在方括号 ([]) 中提供要选择的节点的索引。

选择每个 var 节点的第一个 table 节点。

opts = detectImportOptions("myFile.xml",VariableSelectors="//table/var[1]")
指定运算的优先级。在要首先计算的表达式前后添加圆括号。

选择每个 var 节点的第一个 table 节点。

opts = detectImportOptions("myFile.xml",VariableSelectors="//table/var[1]")

选择第一个 table 节点的第一个 var 节点。

opts = detectImportOptions("myFile.xml",VariableSelectors="(//table/var)[1]")

全部展开

读取第一列作为行名称,指定为数值或逻辑值 1 (true) 或 0 (false)。

描述

true

从要读取的区域的第一列读取行名称。

false

从区域的第一列读取数据并且不创建行名称。

如果 ReadVariableNamesReadRowNames 都为 true,则 detectImportOptions 将读取的区域第一行第一列中的名称保存为属性 T.Properties.DimensionNames 中的第一个维度名称。

行名称的位置,指定为非负整数。

如果 RowNamesColumn0,则 detectImportOptions 不会检测行名称。否则,detectImportOptions 从指定列中检测行名称。

如果未指定 RowNamesColumn,且 ReadRowNamestrue,则 detectImportOptions 将第一列检测为行名称。

行名称的位置,指定为以下形式之一的字符串标量、字符向量或正整数。

指定 RowNamesRange 的方式描述

"Cell"

起始单元格

使用 A1 表示法将行名称的起始单元格指定为包含列字母和行号的字符串标量或字符向量。

从起始单元格开始,detectImportOptions 为数据中的每行标识一个名称。

示例:"A5" 标识列 A 和行 5 相交处的单元格。

"Corner1:Corner2"

矩形范围

使用 "Corner1:Corner2" 形式指定该范围,其中 Corner1Corner2 是定义行名称区域的两个对角。

行数必须与数据行的数量匹配,并且范围只能跨一列。

示例:"A5:A50"

"Column1:Column1"

列范围

使用 "Column1:Column1" 形式指定该范围,其中 Column1Column2 是相同的列字母。

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

示例:"A:A"

n

数值索引

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

示例:5

""

未指定或为空

指示没有行名称。

示例:""

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

行名称,指定为字符串标量或字符向量。如果未指定此名称-值参量,detectImportOptions 不会导入行名称,除非 ReadRowNamestrue

JSON 文件

(自 R2026a 起)

将行名称指定为包含 JSON 指针的字符串标量或字符向量。您必须将 RowNamesSelector 指定为有效的 RFC 6901 JSON 指针。有关详细信息,请参阅 JSON 指针的 IETF 定义

示例:RowNamesSelector="/engineID"

XML 文件

将行名称指定为包含 XPath 表达式的字符串标量或字符向量。您必须将 RowNamesSelector 指定为有效的 XPath 版本 1.0 表达式。

示例:RowNamesSelector="/RootNode/ChildNode"

用于从表中选择各行的 XPath 表达式,指定为字符串标量或字符向量。您必须将 RowSelector 指定为有效的 XPath 版本 1.0 表达式。

如果未指定此名称-值参量,detectImportOptions 会检测行的位置。

示例: "/RootNode/ChildNode"

指定行的 XML 节点,指定为字符串标量或字符向量。

数据类型

全部展开

导入文本数据的类型,指定为以下值之一:

  • "char" - 将文本数据作为字符向量导入。此值是文本文件和电子表格文件的默认值。

  • "string" - 将文本数据作为字符串数组导入。此值是 JSON、XML、Microsoft Word 和 HTML 文件的默认值。

导入的日期和时间数据的类型,指定为下表中的值之一。

生成的数据类型
"datetime"

MATLAB datetime 数据类型

"text"

数据类型取决于 TextType 的值。

  • 如果 TextType"char",则日期是字符向量元胞数组。

  • 如果 TextType"string",则日期是字符串数组。

"exceldatenum"

Excel 序列日期值

此值仅对电子表格文件有效。

序列日期值是一个数字,它等于从给定的参照日期开始计算的天数。Excel 序列日期值与 MATLAB 序列日期值使用不同的参照日期。有关 Excel 日期的详细信息,请参阅 Excel 中的 1900 和 1904 日期系统之间的差异

导入的持续时间数据的类型,指定为下表中的值之一。

生成的数据类型
"duration"

MATLAB duration 数据类型

"text"

数据类型取决于 TextType 的值。

  • 如果 TextType"char",则持续时间数据是字符向量元胞数组。

  • 如果 TextType"string",则持续时间数据是字符串数组。

导入的十六进制数据的类型,指定为下表中的值之一。

生成的数据类型

"auto"

检测到的数据类型;detectImportOptions 确定可以表示所有变量值的最小整数类型。

"text"

未更改的输入文本

"int8"

8 位有符号整数

"int16"

16 位有符号整数

"int32"

32 位有符号整数

"int64"

64 位有符号整数

"uint8"

8 位无符号整数

"uint16"

16 位无符号整数

"uint32"

32 位无符号整数

"uint64"

64 位无符号整数

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

导入的二进制数据的类型,指定为下表中的值之一。

生成的数据类型

"auto"

检测到的数据类型;detectImportOptions 确定可以表示所有变量值的最小整数类型。

"text"

未更改的输入文本

"int8"

8 位有符号整数

"int16"

16 位有符号整数

"int32"

32 位有符号整数

"int64"

64 位有符号整数

"uint8"

8 位无符号整数

"uint16"

16 位无符号整数

"uint32"

32 位无符号整数

"uint64"

64 位无符号整数

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

用于读取日期的区域设置,指定为字符串标量或 xx_YY 形式的字符向量,其中:

  • xx 是指示语言的小写 ISO 639-1 双字母代码。

  • YY 是指示国家/地区的大写 ISO 3166-1 alpha-2 代码。

使用 DateLocale 指定 detectImportOptions 解释月份和星期几的名称及缩写所用的区域设置。

下表列出了区域设置的某些常用值。

区域设置 语言国家/地区
"de_DE"德语德国
"en_GB"英语英国
"en_US"英语美国
"es_ES"西班牙语西班牙
"fr_FR"法语法国
"it_IT"意大利语意大利
"ja_JP"日语日本
"ko_KR"韩语韩国
"nl_NL"荷兰荷兰
"zh_CN"简体中文中国

是否从数值变量中删除非数值字符,指定为数值或逻辑值 1 (true) 或 0 (false)。例如,如果 TrimNonNumerictrue,则 detectImportOptions"$500/-" 检测为 500

数值变量中的小数分隔符,指定为字符串标量或单字符字符向量。分隔符用于区分数值的整数部分和小数部分。例如,如果分隔符是 ",",则 detectImportOptions 将文本 "3,14159" 检测为数值 3.14159

当转换为整数数据类型时,detectImportOptions 将具有小数部分的数值舍入到最接近的整数。DecimalSeparator 不接受数字作为值。

数值变量中的千分位字符,指定为字符串标量或字符向量。千分位字符作为视觉分隔符,用于每隔三位对数值进行分组。例如,如果千分位字符是 ",",则 detectImportOptions 将文本 "1,234,000" 检测为 1234000

指数字符,指定为字符串标量或字符向量。默认的指数字符为 eEdD

示例: "eE"

数据清洗

全部展开

视为缺失值的占位符文本,指定为字符串数组、字符向量或字符向量元胞数组。detectImportOptions 将此占位符文本对应的表元素检测为与元素数据类型关联的缺失值。

示例: "N/A"

示例: [".","NA","N/A"]

导入错误的规则,指定为下表中的值之一。当 detectImportOptions 无法将文本元素转换为预期的数据类型时,会发生导入错误。

导入错误规则行为
"fill"

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

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"error"显示错误消息并取消导入操作。
"omitrow"忽略发生错误的行。
"omitvar"忽略发生错误的变量。

缺失数据的规则,指定为下表中的值之一。

缺失规则行为
"fill"

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

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"error"显示错误消息并取消导入操作。
"omitrow"忽略包含缺失数据的行。
"omitvar"忽略包含缺失数据的变量。

对于文本文件、Microsoft Word 文件和 HTML 文件,如果行中不存在预期字段,则认为数据缺失。由于缺失字段会导致行的后续元素移动字段,因此缺失的字段在行的末尾解释。

对于电子表格文件,如果行中的预期字段没有数据,并且字段类型为空白或空,则被视为数据缺失。

对于 JSON 和 XML 文件,如果预期的节点不存在,则认为数据缺失。

数据中附加列的规则,指定为下表中的值之一。如果一行的列数多于预期,则 detectImportOptions 认为存在附加列。

附加列规则行为
"addvars"

要导入附加列,需要创建新变量。如果有 N 个附加列,将以 "ExtraVar1","ExtraVar2",...,"ExtraVarN" 的形式导入新变量。

detectImportOptions 将附加列检测为数据类型为 char 的文本。

"ignore"忽略附加列数据。
"wrap"将附加列数据换行到新记录中。此操作不会更改变量的数量。
"error"显示错误消息并取消导入操作。

数据中空行的规则,指定为下表中的值之一。如果一行仅包含空白字符,则 detectImportOptions 认为它是空行。

空行规则行为
"skip"跳过空行。
"read"导入空行。detectImportOptions 使用 VariableWidthsVariableOptionsMissingRule 中指定的值及其他相关参量(如 Whitespace)来解析空行。
"error"显示错误消息并取消导入操作。

数据中空行的规则,指定为下表中的值之一。

空行规则行为
"skip"跳过空行。
"read"导入空行。detectImportOptions 使用 VariableWidthsVariableOptionsMissingRule 和其他相关参量(如 Whitespace)中指定的值解析空行。
"error"显示错误消息并取消导入操作。

数据中空列的规则,指定为下表中的值之一。

空列规则行为
"skip"跳过空列。
"read"导入空列。detectImportOptions 使用 VariableWidthsVariableOptionsMissingRule 和其他相关参量(如 Whitespace)中指定的值解析空列。
"error"显示错误消息并取消导入操作。

数据中部分字段的规则,指定为下表中的值之一。如果一个字段到达行尾的字符数少于预期宽度,则 detectImportOptions 认为该字段为部分填充。此名称-值参量仅适用于具有固定宽度的字段。

不完整字段规则行为
"keep"

保留不完整字段数据并将文本转换为正确的数据类型。

如果 detectImportOptions 无法解释部分数据,可能会发生转换错误。

"fill"

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

您可以在要导入的变量的 VariableImportOptions 对象中设置 FillValue 属性。有关设置 FillValue 属性的详细信息,请参阅 setvaropts

"omitrow"忽略包含不完整数据的行。
"omitvar"忽略包含不完整数据的变量。
"wrap"开始读取下一行字符。
"error"显示错误消息并取消导入操作。

文件信息

全部展开

文件的类型,指定为此表中的一个值。

文件类型
"spreadsheet"电子表格文件
"text"文本文件
"delimitedtext"带分隔符的文本文件
"fixedwidth"等宽文本文件
"json"JSON 文件
"xml"XML 文件
"worddocument"Microsoft Word 文档
"html"HTML 文件

filename 不包含文件扩展名或其扩展名不在此列表中时,指定此名称-值参量:

  • .txt.dat.csv(文本文件)

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

  • .json(JSON 文件)

  • .xml(适用于 XML 文件)

  • .docxMicrosoft Word 文档)

  • .html.xhtml.htm(HTML 文件)

与文件关联的字符编码方案,指定为 "system" 或标准字符编码方案名称。如果您没有指定任何编码,则 detectImportOptions 在读取文件时将使用自动字符集检测来确定编码。

自 R2022a 起

HTTPHTTPS 请求选项,指定为 weboptions 对象。当指定的 filename 是包含协议类型 "http://""https://" 的 Internet URL 时,由 weboptions 对象确定如何导入数据。

文本解析

全部展开

字段分隔符,指定为字符串数组、字符向量或字符向量元胞数组。将 Delimiter 指定为任何有效字符(如逗号 "," 或句点 ".")。

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

设定符

字段分隔符

","

"comma"

逗号

" "

"space"

空格

"\t"

"tab"

制表符

";"

"semi"

分号

"|"

"bar"

垂直条

未指定

如果未指定此名称-值参量,detectImportOptions 会自动检测分隔符。

要将多个字符视为单个分隔符,请将 Delimiter 指定为字符串数组或字符向量元胞数组。如果要将未知数量的连续分隔符视为一个分隔符,请指定 ConsecutiveDelimitersRule="join"

Delimiter 仅对带分隔符的文本文件有效,而对等宽文本文件无效。

行尾字符,指定为字符串数组、字符向量或字符向量元胞数组。常见的行尾字符包括换行符 ("\n") 和回车符 ("\r")。如果指定 "\r\n",则 detectImportOptions 会将两者的组合 (\r\n) 视为行尾字符。如果指定 {"\r\n", "\r", "\n"},则 \r\n\r\n 都被视为行尾字符。

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

视为空白的字符,指定为包含一个或多个字符的字符串标量或字符向量。

下表显示如何表示无法使用普通文本输入的特殊字符。

特殊字符

表示形式

百分号

%%

反斜杠

\\

警报

\a

退格符

\b

换页符

\f

换行符

\n

回车符

\r

水平制表符

\t

垂直制表符

\v

其 Unicode® 数值可以通过十六进制数 N 表示的字符

\xN

其 Unicode 数值可以通过八进制数 N 表示的字符

\N

示例: " _"

示例: "?!.,"

要忽略的文本的注释指示符,指定为字符串数组、字符向量或字符向量元胞数组。

例如,指定一个字符(如 "%")以忽略同一行上该字符后面的文本。指定字符串数组(如 ["/*","*/"])以忽略序列之间的任何文本。

detectImportOptions 仅在每行的开头(而不是在行内)检查注释。

示例: ["/*","*/"]

带分隔符的文本文件中的前导分隔符的规则,指定为下表中的值之一。

规则行为
"keep"保留分隔符。
"ignore"忽略分隔符。
"error"显示错误消息并取消导入操作。

带分隔符的文本文件中的尾部分隔符的规则,指定为下表中的值之一。

规则行为
"keep"保留分隔符。
"ignore"忽略分隔符。
"error"显示错误消息并取消导入操作。

带分隔符的文本文件中的连续分隔符的规则,指定为下表中的值之一。

规则行为
"split"将连续分隔符拆分为多个字段。
"join"将多个分隔符合并成一个分隔符。
"error"显示错误消息并取消导入操作。

是否将多个分隔符视为一个分隔符,指定为数值或逻辑值 1 (true) 或 0 (false)。

等宽文本文件中变量的字段宽度,指定为正整数向量。每个整数对应于一个字段中构成变量的字符数。

示例: [10,7,4,26,7]

JSON 和 XML 解析

全部展开

自 R2026a 起

解析时如何遵守 JSON 标准的严格,指定为以下值之一:

自 R2026a 起

允许输入文件中的注释,指定为以下值之一:

  • 数值或逻辑值 1 (true) - 注释在导入过程中不会导致错误。文件中的注释不被视为数据,不会读入 MATLAB。对于单行注释,注释可以“//”开头;对于多行注释,注释可以“/*”开头,以“*/”结尾。

  • 数值或逻辑值 0 (false) - 注释会在导入过程中导致错误。

自 R2026a 起

读取输入文件中的 InfNaN 值,指定为以下值之一:

  • 数值或逻辑值 1 (true) - InfNaN 值(包括 Infinity-Inf-Infinity)会读入 MATLAB 中。

  • 数值或逻辑值 0 (false) - InfNaN 值在导入过程中会导致错误。

自 R2026a 起

读取输入文件中的尾部逗号,指定为以下值之一:

  • 数值或逻辑值 1 (true) - JSON 数组或 JSON 对象后的尾部逗号不会在导入过程中导致错误。

  • 数值或逻辑值 0 (false) - 尾部逗号会在导入过程中导致错误。

表的给定行中的重复 JSON (自 R2026a 起) 或 XML 节点的规则,指定为下表中的值之一。对于 JSON 文件,当 VariableSelectors 名称-值参量包含指向数组的 JSON 指针时,此规则适用。数组项被视为重复节点。

规则

行为

"addcol"

为变量中的每个重复节点添加列以在关联变量中创建一个矩阵。"addcol" 不会为重复节点在表中创建一个单独变量。

例如:

输入 XML 数据

    <table>
        <row>
            <Var1>1</Var1>
            <Var2>2</Var2>
            <Var3>3</Var3>
            <Var1>11</Var1>
            <Var1>111</Var1>
        </row>
        <row>
            <Var1>4</Var1>
            <Var2>5</Var2>
            <Var3>6</Var3>
        </row>
        <row>
            <Var1>7</Var1>
            <Var2>8</Var2>
            <Var3>9</Var3>
        </row>
    </table>

输出表

         Var1          Var2    Var3
    _______________    ____    ____

    1     11    111     2       3  
    4    NaN    NaN     5       6  
    7    NaN    NaN     8       9  

"ignore"

跳过重复节点。

"error"显示错误消息并取消导入操作。

是否将 XML 属性作为变量导入输出表中,指定为数值或逻辑值 1 (true) 或 0 (false)。默认情况下,detectImportOptions 在输出表中将 XML 属性检测为变量。

用于区分输出表中属性和元素的后缀,指定为字符串标量或字符向量。此参量指定 detectImportOptions 追加到与输入 XML 文件中的属性对应的所有表变量的后缀。如果未指定 AttributeSuffix,则 detectImportOptions 将后缀 "Attribute" 追加到与输入 XML 文件中的属性对应的所有变量名称。

示例: "_att"

注册的 XML 命名空间前缀集,指定为由前缀及其关联 URL 组成的 N×2 字符串数组。detectImportOptions 在计算 XML 文件中的 XPath 表达式时使用这些前缀。

当您还计算由选择器名称-值参量(如 VariableSelectors)指定的 XPath 表达式时,可以使用 RegisteredNamespaces

默认情况下,detectImportOptions 自动检测用于 XPath 计算的命名空间前缀。要选择具有未声明的命名空间前缀的 XML 节点,请使用 RegisteredNamespaces 名称-值参量为命名空间前缀注册自定义命名空间 URL。例如,在不包含命名空间前缀的 XML 文件中将前缀 myprefix 分配给 URL https://www.mathworks.com

T = detectImportOptions(filename,VariableSelectors="/myprefix:Data", ...
    RegisteredNamespaces=["myprefix","https://www.mathworks.com"])

变量元数据

全部展开

变量单位的位置,指定为非负整数。

如果 VariableUnitsLine0,则 detectImportOptions 不会检测变量单位。否则,detectImportOptions 从指定行中检测变量单位。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

变量单位的位置,指定为以下形式之一的字符串标量、字符向量或正整数。

指定 VariableUnitsRange 的方式描述

"Cell"

起始单元格

使用 A1 表示法将变量单位的起始单元格指定为包含列字母和行号的字符串标量或字符向量。

从起始单元格开始,detectImportOptions 为数据中的每个变量标识一个单位。

示例:"A5" 标识列 A 和行 5 相交处的单元格。

"Corner1:Corner2"

矩形范围

使用 "Corner1:Corner2" 形式指定该范围,其中 Corner1Corner2 是定义变量单位区域的两个对角。

范围只能跨一行。

示例:"A5:K5"

n

数值索引

使用正行索引指定包含变量单位的行。

示例:5

"Row1:Row2"

行范围

使用 "Row1:Row2" 形式指定该范围,其中 Row1Row2 是相同的行索引。

变量单位必须在一行中。

示例:"5:5"

""

未指定或为空

指示没有变量单位。

示例:""

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

变量单位的位置,指定为非负整数。

如果 VariableUnitsRow0,则 detectImportOptions 不会检测变量单位。否则,detectImportOptions 从指定行中检测变量单位。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

变量单位,指定为字符串标量或字符向量。如果未指定此名称-值参量,detectImportOptions 不导入变量单位。

JSON 文件

(自 R2026a 起)

将变量单位指定为包含 JSON 指针的字符串标量或字符向量。您必须将 VariableUnitsSelector 指定为有效的 RFC 6901 JSON 指针。有关详细信息,请参阅 JSON 指针的 IETF 定义

示例:VariableUnitsSelector="/statuses/metadata/units"

XML 文件

将变量单位指定为包含 XPath 表达式的字符串标量或字符向量。您必须将 VariableUnitsSelector 指定为有效的 XPath 版本 1.0 表达式。

示例:VariableUnitsSelector="/RootNode/ChildNode"

示例:VariableUnitsSelector="//table[1]/units/"

变量描述的位置,指定为非负整数。

如果 VariableDescriptionsLine0,则 detectImportOptions 不会检测变量描述。否则,detectImportOptions 从指定行中检测变量描述。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

变量描述的位置,指定为以下形式之一的字符串标量、字符向量或正整数。

指定 VariableDescriptionsRange 的方式描述

"Cell"

起始单元格

使用 A1 表示法将变量描述的起始单元格指定为包含列字母和行号的字符串标量或字符向量。

从起始单元格开始,detectImportOptions 为数据中的每个变量标识一个描述。

示例:"A5" 标识列 A 和行 5 相交处的单元格。

"Corner1:Corner2"

矩形范围

使用 "Corner1:Corner2" 形式指定该范围,其中 Corner1Corner2 是定义变量描述区域的两个对角。

范围只能跨一行。

示例:"A5:K5"

"Row1:Row2"

行范围

使用 "Row1:Row2" 形式指定该范围,其中 Row1Row2 是相同的行索引。

变量描述必须在一行中。

示例:"5:5"

n

数值索引

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

示例:5

""

未指定或为空

指示没有变量描述。

示例:""

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

变量描述的位置,指定为非负整数。

如果 VariableDescriptionsRow0,则 detectImportOptions 不会检测变量描述。否则,detectImportOptions 从指定行中检测变量描述。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

变量描述,指定为字符串标量或字符向量。如果未指定此名称-值参量,detectImportOptions 不导入变量描述。

JSON 文件

(自 R2026a 起)

将变量描述指定为包含 JSON 指针的字符串标量或字符向量。您必须将 VariableDescriptionsSelector 指定为有效的 RFC 6901 JSON 指针。有关详细信息,请参阅 JSON 指针的 IETF 定义

示例:VariableDescriptionsSelector="/statuses/metadata"

XML 文件

将变量描述指定为包含 XPath 表达式的字符串标量或字符向量。您必须将 VariableDescriptionsSelector 指定为有效的 XPath 版本 1.0 表达式。

示例:VariableDescriptionsSelector="/RootNode/RowNode/@Name"

示例:VariableDescriptionsSelector="//table[1]/descriptions/*"

输出参量

全部折叠

指定文件的导入选项,以 SpreadsheetImportOptionsDelimitedTextImportOptionsFixedWidthImportOptionsJSONImportOptionsXMLImportOptions 对象形式返回。选项对象的类型取决于指定文件的类型。

提示

  • 在创建导入选项对象后更新属性值:不推荐使用圆点表示法更新由 detectImportOptions 创建的导入选项对象的属性。当您使用圆点表示法设置属性时,MATLAB 不会重新检测文件的所有导入选项。因此,要更新和重新检测所有属性,必须使用名称-值参量指定新值。例如,按如下方式更新 ConsecutiveDelimitersRule 属性的值并重新检测导入选项。

    opts = detectImportOptions(__,'ConsecutiveDelimitersRule','join')

  • 使用 XPath 选择器指定要导入 XML 输入文档的哪些元素。例如,假设您要导入 XML 文件 myFile.xml,该文件具有以下结构:

    <data>
        <table category="ones">
            <var>1</var>
            <var>2</var>
        </table>
        <table category="tens">
            <var>10</var>
            <var>20</var>
        </table>
    </data>
    
    下表提供 XPath 选择器名称-值参量(例如 VariableSelectorsTableSelector)支持的 XPath 语法。

    选取操作语法示例结果
    选择其名称与您要选择的节点匹配的每个节点,而无论它在文档中的位置如何。在名称前加两个正斜杠 (//) 前缀。
    data = readtable('myFile.xml', 'VariableSelectors', '//var')
    data =
    
      4×1 table
    
        var
        ___
    
         1 
         2 
        10 
        20 
    读取属于元素节点的属性的值。在属性前加 at 符号 (@) 前缀。
    data = readtable('myFile.xml', 'VariableSelectors', '//table/@category')
    data =
    
      2×1 table
    
        categoryAttribute
        _________________
    
             "ones"      
             "tens"   
    在一组节点中选择一个特定节点。在方括号 ([]) 中提供要选择的节点的索引。
    data = readtable('myFile.xml', 'TableSelector', '//table[1]')
    data =
    
      2×1 table
    
        var
        ___
    
         1 
         2 
    
    指定运算的优先级。在要首先计算的表达式前后添加圆括号。
    data = readtable('myFile.xml', 'VariableSelectors', '//table/var[1]')
    data =
    
      2×1 table
    
        var
        ___
    
         1 
        10 
    data = readtable('myFile.xml', 'VariableSelectors', '(//table/var)[1]')
    data =
    
      table
    
        var
        ___
    
         1 

版本历史记录

在 R2016b 中推出

全部展开