主要内容

spreadsheetDatastore

电子表格文件的数据存储

描述

使用一个spreadsheetDatastore对象来管理电子表格文件的大型集合,其中集合不一定适合内存。您可以创建spreadsheetDatastore对象使用spreadsheetDatastore函数,指定其属性,然后使用对象函数导入数据。

创建

描述

例子

ssd= spreadsheetDatastore (位置从指定的数据集合创建电子表格数据存储位置

ssd= spreadsheetDatastore (位置名称,值指定其他参数和属性ssd使用一个或多个名称-值参数。例如,spreadsheetDatastore(位置、“FileExtensions”(“.xlsx”、“xls”))根据文件扩展名指定在数据存储中包含哪些文件。

输入参数

全部展开

数据存储中包含的文件或文件夹,指定为文件集对象,作为文件路径,或作为DsFileSet对象。

  • 文件集对象—可以指定位置作为一个文件集对象。将位置指定为文件集对象相比于指定路径或DsFileSet对象。有关更多信息,请参见matlab.io.datastore.FileSet

  • 文件路径——您可以将单个文件路径指定为字符向量或字符串标量。可以将多个文件路径指定为字符向量的单元格数组或字符串数组。

  • DsFileSetobject -指定对象DsFileSet对象。有关更多信息,请参见matlab.io.datastore.DsFileSet

文件或文件夹可以是本地的或远程的:

  • 本地文件或文件夹——指定文件或文件夹的本地路径。如果文件不在当前文件夹中,则指定完全路径或相对路径。指定文件夹的子文件夹中的文件不会自动包含在数据存储中。指定本地路径时,可以使用通配符“*”。此字符指定数据存储包含所有匹配文件或匹配文件夹中的所有文件。

  • 远程文件或文件夹——将远程文件或文件夹的完整路径指定为表单的统一资源定位符(URL)hdfs: / / /path_to_file.有关更多信息,请参见使用远程数据

指定文件夹时,数据存储只包含支持的文件格式的文件,而忽略任何其他格式的文件。若要指定要包含在数据存储中的文件扩展名的自定义列表,请参阅FileExtensions财产。

spreadsheetDatastore函数支持扩展名为:xls.xlsx.xlsm.xltx,.xltm

例子:“file1.xlsx”

例子:“. . / dir /数据/ file1.xlsx”

例子:[" C: \ dir \ data \ file1.xlsx”,“C: \ dir \ data \ file2.xlsx”)

例子:“s3: / / bucketname / path_to_files / * xls”

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:ssd = spreadsheetDatastore(“C: \ dir \ spreadsheetdata”、“FileExtensions”(“xls”、“.xlsm”))

电子表格文件扩展名,指定为名称-值参数,由“FileExtensions”以及字符向量、字符向量的单元格数组、字符串标量或字符串数组。

  • 如果不指定“FileExtensions”,然后spreadsheetDatastore自动包含所有文件xls.xlsx.xlsm.xltx,.xltm指定路径中的扩展名。

  • 中包含具有非标准文件扩展名的电子表格SpreadsheetDatastore,然后显式指定这些扩展。

  • 如果你想创建一个SpreadsheetDatastore对于没有任何扩展名的文件,则指定“FileExtensions”作为一个空字符向量,''

例子:“FileExtensions”、“

例子:“FileExtensions”、“xls”

例子:“FileExtensions”(“.xlsx”、“.xlsm”)

数据类型:字符|细胞|字符串

子文件夹包含标志,指定为名称-值参数,由“IncludeSubfolders”而且真正的、0或1。指定真正的将所有文件和子文件夹包含在每个文件夹或只包括每个文件夹中的文件。

如果不指定“IncludeSubfolders”,则默认值为

例子:“IncludeSubfolders”,真的

数据类型:逻辑|

输出数据类型,指定为名称-值参数,由“OutputType”其中一个价值观是:

  • “汽车”—根据是否指定的数据存储的输出,检测来自数据存储的输出是表还是时间表“RowTimes”名称-值参数。如果您指定“RowTimes”然后输出一个时间表;否则,输出是一个表。

  • “表”——返回一个表格

  • “时间表”——返回一个时间表

的价值OutputType控件返回的数据类型预览,readall功能。方法结合使用此选项“RowTimes”要从中返回时间表的名称-值对spreadsheetDatastore

例子:“OutputType”、“时间表”

数据类型:字符|字符串

可选文件系统根路径,指定为名称-值参数,由“AlternateFileSystemRoots”字符串向量或者单元格数组。使用“AlternateFileSystemRoots”在本地机器上创建数据存储,但需要访问和处理另一台机器(可能是不同的操作系统)上的数据时。此外,在使用并行计算工具箱™和MATLAB®并行服务器™,并且数据存储在本地计算机上,同时在不同平台云或集群计算机上有可用的数据副本,则必须使用“AlternateFileSystemRoots”关联根路径。

  • 要关联一组彼此等价的根路径,请指定“AlternateFileSystemRoots”作为一个字符串向量。例如,

    [" Z: \数据集”、“/ mynetwork /数据集”)

  • 若要关联多个与数据存储等效的根路径集,请指定“AlternateFileSystemRoots”作为包含多行的单元格数组,其中每一行表示一组等价的根路径。将单元格数组中的每一行指定为字符串向量或字符向量的单元格数组。例如:

    • 指定“AlternateFileSystemRoots”作为字符串向量的单元格数组。

      {[Z: \“数据集”、“/ mynetwork /数据集”);…[" Y: \数据集”、“/ mynetwork2 /数据集”、“年代:\数据集”)}

    • 另外,指定“AlternateFileSystemRoots”作为单元格数组的字符向量单元格数组。

      {{“Z: \数据集”、“mynetwork /数据集”},…{“Y: \数据集”,“mynetwork2 /数据集”,年代:\数据集的}}

的价值“AlternateFileSystemRoots”必须满足以下条件:

  • 包含一个或多个行,其中每一行指定一组等价的根路径。

  • 每行指定多个根路径,每个根路径必须包含至少2个字符。

  • 根路径是唯一的,并且不是彼此的子文件夹。

  • 包含指向文件位置的至少一个根路径项。

有关更多信息,请参见为不同机器或集群上的处理设置数据存储

例子:[" Z: \数据集”、“/ mynetwork /数据集”)

数据类型:字符串|细胞

文本变量的输出数据类型,指定为由“TextType”,要么“字符”“字符串”

  • 如果输出表来自readall,或预览函数包含文本变量“TextType”指定这些变量的数据类型。

  • 如果“TextType”“字符”,则输出为字符向量的单元格数组。

  • 如果“TextType”“字符串”,则输出具有类型字符串

数据类型:字符|字符串

除了这些名称-值对之外,还可以将该页上的任何属性指定为名称-值对(除了文件属性)。

属性

全部展开

SpreadsheetDatastore属性描述数据存储对象中文件的格式,并控制如何从数据存储读取数据。除了文件属性,您可以指定的值SpreadsheetDatastore属性,在创建数据存储对象时使用名称-值对参数。要在创建对象后查看或修改属性,请使用点表示法:

ds = spreadsheetDatastore (“airlinesmall_subset.xlsx”);ds。Sheets = [1 2];ds。范围=“A1: C6”

文件属性

包含在数据存储中的文件,解析为字符向量的单元格数组或字符串数组,其中每个字符向量或字符串都是文件的完整路径。的位置论点的spreadsheetDatastore而且数据存储函数定义这些文件。

单元格数组中指定的第一个文件确定数据存储中所有文件的变量名和格式信息。

例子:[" C: \ dir \ data \ file1.xls”;“C: \ dir \ data \ file2.xls”)

数据类型:细胞|字符串

读取工作表时要跳过的行数,指定为正整数。当您还指定范围财产,NumHeaderLines指定数据块开始时要跳过的行数。

数据类型:

文件中的工作表,指定为字符向量、字符向量的单元格数组、字符串标量或包含工作表名称的字符串数组,或指定为工作表索引的数字向量。空字符向量''指示包含文件中的所有表。

例子:[" sheet1”、“sheet7”)

例子:(3 5 7)

数据类型:字符|细胞|字符串|

行和列边界,指定为定义表中矩形数据块的字符向量或字符串标量。空字符向量''指示边界是文件的开始和数据的结束。

例子:“B1: T7”

例子:“C:”

数据类型:字符|字符串

指示器,用于将数据存储中第一个文件的第一行读取为变量名(指定为其中之一)真正的1)或0).

  • 如果真正的,则第一个文件的第一个非标题行确定数据的变量名。

  • 如果,则第一个文件的第一个非头行包含第一行数据。默认变量名被赋值为Var1Var2,等等。

数据类型:逻辑|

标记以保留变量名,指定为任意“修改”“保存”

  • “修改”转换无效的变量名(由isvarname函数)到有效的MATLAB标识符。

  • “保存”-保留不是有效的MATLAB标识符的变量名,例如包含空格和非ascii字符的变量名。

从R2019b开始,变量名和行名可以包含任何字符,包括空格和非ascii字符。此外,它们可以以任何字符开头,而不仅仅是字母。变量名和行名不一定是有效的MATLAB标识符(由isvarname功能)。若要保留这些变量名和行名,请设置的值VariableNamingRule“保存”.的值时不会刷新变量名VariableNamingRule改变从“修改”“保存”

数据类型:字符|字符串

数据存储中的变量名称,指定为字符向量、字符向量的单元格数组、字符串标量或字符串数组。按照变量在文件中出现的顺序指定变量名。如果不指定变量名,数据存储将从第一个文件中的第一个非标题行检测它们。您可以指定VariableNames但是,对于字符向量或字符串标量,数据存储将属性值转换并存储到字符向量的单元格数组中。当修改VariableNames属性中,新变量名的数量必须与原始变量名的数量匹配。

的值来支持无效的MATLAB标识符作为变量名,例如包含空格和非ascii字符的变量名VariableNamingRule参数“保存”

如果ReadVariableNames,然后VariableNames默认为[" Var1”、“Var2”…]

例子:“时间”,“日期”,“数量”)

数据类型:字符|细胞|字符串

变量类型,指定为“替身”“字符”“字符串”“分类”,或“datetime”,表示读取数据时每个变量的类型。

变量类型列表与中的变量相对应VariableNames.类型字符,datetime可从数据中自动检测。您可以指定VariableTypes但是,作为字符向量或字符串标量spreadsheetDatastore自动将其转换为字符向量的单元格数组或字符串数组。

例子:(“字符”、“分类”)

数据类型:字符|细胞|字符串

属性预览readall表格

要从文件中读取的变量,指定为字符向量、字符向量的单元格数组、字符串标量或字符串数组。每个字符向量或字符串包含一个变量的名称。可以以任意顺序指定变量名。您可以指定SelectedVariableNames但是,对于字符向量或字符串标量spreadsheetDatastore自动将其转换为字符向量的单元格数组或字符串数组。

要将无效的MATLAB标识符支持为变量名,例如包含空格和非ascii字符的变量名,请设置的值VariableNamingRule参数“保存”

例子:[" Var3”、“Var7”、“Var4”)

数据类型:字符|细胞|字符串

选定的变量类型,指定为“替身”“字符”“字符串”“分类”,或“datetime”,它指示读取数据时每个选定变量的类型。变量类型列表与中的变量相对应SelectedVariableNames.类型字符,datetime可从数据中自动检测。您可以指定SelectedVariableTypes但是,作为字符向量或字符串标量,它会自动转换为字符向量的单元格数组或字符串数组。

例子:(“双”、“datetime”)

数据类型:字符|细胞|字符串

类调用中要读取的数据量函数,指定为“文件”“表”,或作为正整数标量。

  • 如果ReadSize“文件”,然后每通电话到每次读取一个文件中的所有数据。

  • 如果ReadSize“表”,然后每通电话到每次读取一张表的所有数据。

  • 如果ReadSize是正整数,那么每次调用到所指定的行ReadSize,如果到达数据的末尾,则会减少。

当你改变ReadSize从整数标量到“文件”“表”方法重置数据存储重置函数。

数据类型:字符|字符串|

行时间变量的名称,指定为由“RowTimes”和一个变量名(例如“日期”)或变量索引(例如3.).

RowTimes与时间表相关的参数。时间表的每一行都与一个时间相关联,该时间在时间表的时间向量中捕获。中指定的变量RowTimes必须包含一个datetime或者一个持续时间向量。

的值“OutputType”“时间表”,但你没有具体说明“RowTimes”,然后spreadsheetDatastore使用第一个datetime持续时间变量作为时间表的行时间。

供人使用的属性writeall

此属性是只读的。

用于构造数据存储的文件夹,作为字符向量的单元格数组返回。单元格数组的方向是列向量。每个字符向量都是到包含数据文件的文件夹的路径。的位置论点的spreadsheetDatastore而且数据存储函数定义文件夹创建数据存储时。

文件夹属性时重置文件财产的SpreadsheetDatastore对象。

数据类型:细胞

此属性是只读的。

支持写入的格式,作为字符串的行向量返回。此属性指定使用时可能的输出格式writeall从数据存储写入输出文件。

此属性是只读的。

默认输出格式,作为字符串标量返回。此属性指定使用时的默认格式writeall从数据存储写入输出文件。

数据类型:字符串

对象的功能

hasdata 确定是否有数据可读
numpartitions 数据存储分区数
分区 分区数据存储
预览 预览数据存储中的数据子集
读取数据存储中的数据
readall 读取数据存储中的所有数据
writeall 将数据存储写入文件
重置 将数据存储重置为初始状态
sheetnames 来自数据存储的查询表名称
变换 变换数据存储
结合 合并来自多个数据存储的数据
isPartitionable 确定数据存储是否可分区
isSubsettable 确定数据存储是否可子设置
isShuffleable 确定数据存储是否可洗牌

例子

全部折叠

使用文件集对象或文件路径创建电子表格数据存储对象。

创建一个FileSet对象。创建一个spreadsheetDatastore对象。

fs = matlab.io.datastore.FileSet (“airlinesmall_subset.xlsx”);ssd = spreadsheetDatastore (fs)
ssds =具有属性的SpreadsheetDatastore: Files:{'…\Documents\MATLAB\Examples\airlinesmall_sub .xlsx'} Folders:{'…\Documents\MATLAB\Examples'} AlternateFileSystemRoots: {} Sheets: " Range: " Sheet格式属性:NumHeaderLines: 0 VariableNamingRule: 'modify' ReadVariableNames: true VariableNames:{'年','月','日ofmonth '…{'double', 'double', 'double'…SelectedVariableNames: {'Year', 'Month', 'DayofMonth'…SelectedVariableTypes: {'double', 'double', 'double'…ReadSize: 'file' OutputType: 'table' RowTimes: [] Write-specific Properties: SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq"] DefaultOutputFormat: "xlsx"

或者,您可以使用文件路径指定数据。

ssd = spreadsheetDatastore (“airlinesmall_subset.xlsx”);

创建一个SpreadsheetDatastore对象,该对象包含文件airlinesmall_subset.xlsx

ssd = spreadsheetDatastore (“airlinesmall_subset.xlsx”
ssds =具有属性的SpreadsheetDatastore: Files:{'…\Documents\MATLAB\Examples\airlinesmall_sub .xlsx'} Folders:{'…\Documents\MATLAB\Examples'} AlternateFileSystemRoots: {} Sheets: " Range: " Sheet格式属性:NumHeaderLines: 0 VariableNamingRule: 'modify' ReadVariableNames: true VariableNames:{'年','月','日ofmonth '…{'double', 'double', 'double'…SelectedVariableNames: {'Year', 'Month', 'DayofMonth'…SelectedVariableTypes: {'double', 'double', 'double'…ReadSize: 'file' OutputType: 'table' RowTimes: [] Write-specific Properties: SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq"] DefaultOutputFormat: "xlsx"

显示文件的工作表名称。该文件每年包含一页。

sheetnames (ssd, 1)
ans =13 x1字符串"1996" "1997" "1998" "1999" "2000" "2001" "2002" "2003" "2004" "2005" "2006" "2007" "2008"

指定的变量FlightNum在第二表中作为感兴趣的数据,并预览前八行。

ssd。表= 2;ssd。SelectedVariableNames =“FlightNum”;预览(ssd)
ans =8×1表航班号_________ 1014 1201 702 1184 1310 1759 1242 1558

只读取变量的前三行DepTime而且ArrTime在第一页。

ssd。ReadSize = 3;ssd。表= 1;ssd。SelectedVariableNames = [“DepTime”“ArrTime”];阅读(ssd)
ans =3×2表DepTime ArrTime _______ _______ 2117 2305 1252 1511 1441 1708

把第四、五、六页都读一遍。

ssd。表= 4:6;readall (ssd);

使用OutputType而且RowTimes要创建的名称-值对SpreadsheetDatastore返回时间表而不是表格。

的数据存储tsunamis_dated.xlsx.指定“OutputType”作为“时间表”SpreadsheetDatastore返回时间表而不是表格。

ssd = spreadsheetDatastore (“tsunamis_dated.xlsx”“OutputType”“时间表”);预览(ssd)
ans =8×15时间表日期经度纬度ValidityCode有效性CauseCode引起EarthquakeMagnitude国家位置MaxHeight IidaMagnitude强度NumDeaths DescDeaths时间  ___________ ________ _________ ____________ ____________________ _________ ____________________________ ___________________ _____________ ____________________________ _________ _____________ _________ _________ __________ ________________________ 04 - mar - 1952 42.15 - 143.85 4{“明确的海啸”}1 8.1{‘地震’}{‘日本’}{SE。4{'确切的海啸'}3{'地震和滑坡'}8.3{'美国'}{'东南'。阿拉斯加524.26 4.6 5 1 1958年7月10日06:15:53.600 1960年5月22日-39.5 -74.5 4{'确定的海啸'}1{'地震'}9.5{'智利'}{'中智利'}25 4.6 4 1260 3 1960年5月22日19:11:17 000 1960年11月20日-6.8 -80.7 4{'确定的海啸'}1{'地震'}6.8{'秘鲁'}{'秘鲁'}9 3.2 2.5 66 2 1960年11月20日22:01:56 400 1964年3月28日61.1 -147.5 4{'确定的海啸'}3{'地震和滑坡'}9.2{'美国'}{'威廉王子声,4{'明确的海啸'}1{'地震'}7.5{'日本'}{'西北。本州岛'}5.8 2.7 2 26 1 1964年6月16日04:01:44.300 1968年8月14日0.2 119.8 4{'确定的海啸'}1{'地震'}7.8{'印度尼西亚'}{'班达海'}10 3.3 3 200 3 1968年8月14日22:14:19.400 1969年2月23日-3.1 118.9 4{'确定的海啸'}1{'地震'}6.9{'印度尼西亚'}{'马卡萨尔海峡'}4 22 600 3 1969年2月23日00:36:56 600

当您不指定时“RowTimes”spreadsheetDatastore使用第一个datetime或duration变量作为行时间。在这种情况下,日期变量用于行次数。该数据有两个datetime变量:日期而且时间.的日期变量不包含有关小时、分或秒的信息,而时间变量具有每个事件的具体时间。

指定“RowTimes”选项使用事件时间时间变量)作为行时间。

ssd = spreadsheetDatastore (“tsunamis_dated.xlsx”“OutputType”“时间表”“RowTimes”“时间”);预览(ssd)
ans =8×15时间表的时间经度纬度ValidityCode有效性CauseCode引起EarthquakeMagnitude国家位置MaxHeight IidaMagnitude强度NumDeaths DescDeaths日期  ________________________ ________ _________ ____________ ____________________ _________ ____________________________ ___________________ _____________ ____________________________ _________ _____________ _________ _________ __________ ___________ 04 - mar - 1952 01:22:41.000 42.15 - 143.85 4{“明确的海啸”}1 8.1{‘地震’}{‘日本’}{SE。4{'确切的海啸'}3{'地震和滑坡'}8.3{'美国'}{'东南'。阿拉斯加,AK'} 524.26 4.6 5 1 10- 1958年7月22- 1960年5月19日19:11:17 000 -39.5 -74.5 4{'确定的海啸'}1{'地震'}9.5{'智利'}{'中智利'}25 4.6 4 1260 3 1960年5月22日20- 11月1960年22:01:56.400 -6.8 -80.7 4{'确定的海啸'}1{'地震'}6.8{'秘鲁'}}9 3.2 2.5 66 2 1960年11月20日28- 1964年3月03:36:14 000 61.1 -147.5 4{'确定的海啸'}3{'地震和滑坡'}9.2{'美国'}{'威廉王子声,4{'明确的海啸'}1{'地震'}7.5{'日本'}{'西北。本州岛'}5.8 2.7 2 26 1 1964年6月16日-1968年8月14日22:14:19.400 0.2 119.8 4{'确定的海啸'}1{'地震'}7.8{'印度尼西亚'}{'班达海'}10 3.3 3 200 3 1968年8月14日-1969年2月23日00:36:56.600 -3.1 118.9 4{'确定的海啸'}1{'地震'}6.9{'印度尼西亚'}{'马卡萨尔海峡'}4 22 600 3 1969年2月23日

版本历史

介绍了R2016a

Baidu
map