Main Content

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

writetimetable

将时间表写入文件

说明

示例

writetimetable(TT) 将时间表 TT 写入以逗号分隔的文本文件。文件名为时间表的工作区变量名称,附加扩展名 .txt。如果 writetimetable 无法根据输入时间表名称构造文件名,那么它会写入 timetable.txt 文件中。

TT 中每个变量的每一列都将成为输出文件中的列。TT 的变量名称将成为文件第一行的列标题。writetimetable 函数会覆盖任何现有文件。

示例

writetimetable(TT,filename) 写入具有 filename 指定的名称和扩展名的文件。

writetimetable 根据指定扩展名确定文件格式。扩展名必须是下列格式之一:

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

  • .xls.xlsm.xlsx(适用于 Excel® 电子表格文件)

  • .xlsb(适用于安装了 Windows® Excel 的系统上支持的 Excel 电子表格文件)

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

示例

writetimetable(___,Name,Value) 支持上述语法中的任何输入参数,且可使用一个或多个 Name,Value 对组参数指定其他选项。

例如,您可以指定是否将变量名称写入为输出文件中的列标题。

示例

全部折叠

创建一个时间表,将其写入以逗号分隔的文本文件,然后用不同分隔符将该时间表写入另一个文本文件。

在工作区中使用行时间持续时间向量 RowTimes 定义一个时间表。

RowTimes = seconds(1:5)';
TT = timetable(RowTimes,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
               'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
    RowTimes    Reading1    Reading2
    ________    ________    ________

    1 sec           98        120   
    2 sec         97.5        111   
    3 sec         97.9        119   
    4 sec         98.1        117   
    5 sec         97.9        116   

将该时间表写入以逗号分隔的文本文件,并显示文件内容。writetimetable 函数将输出名为 TT.txt 的文本文件。

writetimetable(TT)
type 'TT.txt'
RowTimes,Reading1,Reading2
1 sec,98,120
2 sec,97.5,111
3 sec,97.9,119
4 sec,98.1,117
5 sec,97.9,116

要用不同分隔符将同一时间表写入文本文件,请使用 'Delimiter' 名称-值对组。

writetimetable(TT,'TT_bar.txt','Delimiter','bar')
type 'TT_bar.txt'
RowTimes|Reading1|Reading2
1 sec|98|120
2 sec|97.5|111
3 sec|97.9|119
4 sec|98.1|117
5 sec|97.9|116

创建一个时间表,将其写入电子表格文件,然后显示文件内容。

在工作区中定义一个时间表,使用行时间作为 datetime 向量。

Y = [2014:2018]'; M = ones(5,1); D = ones(5,1);
RowTimes = datetime(Y,M,D); % Create Row Times
TT = timetable(RowTimes,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
               'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
     RowTimes      Reading1    Reading2
    ___________    ________    ________

    01-Jan-2014        98        120   
    01-Jan-2015      97.5        111   
    01-Jan-2016      97.9        119   
    01-Jan-2017      98.1        117   
    01-Jan-2018      97.9        116   

将该表写入电子表格文件 'TT.xlsx'。默认情况下,writetimetable 函数会写入文件中的第一个工作表。使用 'Sheet' 名称-值对组指定要写入到的工作表。

writetimetable(TT,'TT.xlsx','Sheet',2)

读取并显示文件内容。

readtimetable('TT.xlsx','Sheet',2) 
ans=5×2 timetable
          RowTimes          Reading1    Reading2
    ____________________    ________    ________

    01-Jan-2014 00:00:00        98        120   
    01-Jan-2015 00:00:00      97.5        111   
    01-Jan-2016 00:00:00      97.9        119   
    01-Jan-2017 00:00:00      98.1        117   
    01-Jan-2018 00:00:00      97.9        116   

输入参数

全部折叠

输入时间表。

文件名,指定为字符向量或字符串标量。

根据您写入的位置,filename 可以采用以下形式之一。

位置

形式

当前文件夹

要写入当前文件夹,请在 filename 中指定文件名。

示例:'myTextFile.csv'

其他文件夹

要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称。

示例:'C:\myFolder\myTextFile.csv'

示例:'myFolder\myExcelFile.xlsx'

远程位置

要写入远程位置,filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

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.xlsx'

  • 如果 filename 包含文件扩展名,则写入函数基于扩展名确定文件格式。否则,写入函数会创建一个逗号分隔的文本文件,并附加扩展名 .txt。您也可以指定不带文件扩展名的 filename,然后添加 'FileType' 名称-值对组参数来指示文件类型。

  • 如果 filename 不存在,则写入函数会创建该文件。

  • 如果 filename 是一个现有文本文件的名称,则写入函数将覆盖该文件。

  • 如果 filename 是一个现有电子表格文件的名称,则写入函数会将数据写入指定位置,但不会覆盖输入数据范围之外的任何值。

数据类型: char | string

名称-值参数

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

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'WriteVariableNames',false 指示变量名称不应作为输出文件的第一行包含在内。

文本和电子表格文件

全部折叠

文件类型,指定为逗号分隔的对组,其中包含 'FileType' 和一个包含 'text''spreadsheet' 的字符向量或字符串。

'FileType' 名称-值对组必须与 filename 输入参数配合使用。如果 filename 输入参数包含标准文件扩展名,则无需指定 'FileType' 名称-值对组参数。以下标准文件扩展名由写入函数识别:

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

  • .xls.xlsm.xlsx(适用于 Excel 电子表格文件)

  • .xlsb(适用于安装了 Windows Excel 的系统上支持的 Excel 电子表格文件)

示例: 'FileType','spreadsheet'

数据类型: char | string

指示将变量名称写入为列标题的指示符,指定为逗号分隔的对组,其中包含 'WriteVariableNames'truefalse

指示符

行为

true

写入函数将变量名称作为输出的列标题包含在内。这是默认行为。

false

写入函数不会在输出中包含变量名称。

用于写入日期的区域设置,指定为逗号分隔的对组,其中包含 'DateLocale' 和一个字符向量或字符串标量。在将 datetime 值写入文件时,请使用 DateLocale 指定 writetimetable 写入月和星期几的名称以及缩写所用的区域设置。该字符向量或字符串采用 xx_YY 形式,其中 xx 是用于指示语言的小写 ISO 639-1 双字母代码,YY 是用于指示国家/地区的大写 ISO 3166-1 alpha-2 代码。有关区域设置的常见值的列表,请参阅 datetime 函数的 Locale 名称-值对组参数。

当日期可以写为 Excel 格式的日期时,写入函数将忽略 'DateLocale' 参数值。

示例: 'DateLocale','ja_JP'

数据类型: char | string

写入模式,指定为以逗号分隔的对组,该对组由 'WriteMode' 和一个字符向量或字符串标量组成。根据文件类型选择一种写入模式。

文件类型

写入模式

文本文件

  • 'overwrite'(默认值)- 覆盖文件。

  • 'append' - 将数据追加到文件。

如果您指定的文件不存在,则写入函数会创建数据并将数据写入新文件。

电子表格文件

  • 'inplace'(默认值)- 仅更新输入数据占用的范围。写入函数不会更改输入数据所占范围之外的任何数据。

    • 如果没有指定工作表,则写入函数会写入第一个工作表。

  • 'overwritesheet' - 清空指定的工作表,并将输入数据写入已清空的工作表。

    • 如果没有指定工作表,则写入函数会清空第一个工作表,并将输入数据写入其中。

  • 'append' - 写入函数将输入数据追加到指定工作表的占用范围的底部。

    • 如果没有指定工作表,则写入函数会将输入数据追加到第一个工作表的占用范围的底部。

  • 'replacefile' - 从文件中删除所有其他工作表,然后清空指定的工作表并将输入数据写入其中。

    • 如果未指定工作表,则写入函数会从文件中删除所有其他工作表,然后清空第一个工作表并将输入数据写入其中。

    • 如果您指定的文件不存在,则写入函数会创建一个新文件,并将输入数据写入第一个工作表。

  • WriteVariableNames 设置为 true 时,写入函数不支持 'append' 写入模式。

  • 对于电子表格文件:

    • 当写入模式为 'append' 时,写入函数不支持 Range 参数。

    • 如果您指定的文件不存在,则写入函数将执行与 'replacefile' 相同的动作。

示例: 'WriteMode','append'

数据类型: char | string

仅限文本文件

全部折叠

字段分隔符,指定为逗号分隔的对组,由 'Delimiter' 和一个字符向量或字符串标量组成,该字符串标量包含以下设定符之一:

设定符

字段分隔符

','

'comma'

逗号。这是默认行为。

' '

'space'

空格

'\t'

'tab'

制表符

';'

'semi'

分号

'|'

'bar'

垂直条

您只能将 'Delimiter' 名称-值对组用于带分隔符的文本文件。

示例: 'Delimiter','space'

数据类型: char | string

用于写入引用文本的指示符,指定为 "minimal""all""none"

  • 如果 QuoteStrings"minimal",则该函数会将包含分隔符、换行符或双引号字符的任何变量用双引号字符引起来。

  • 如果 QuoteStrings"all",则该函数会将所有文本、分类、日期时间和持续时间变量用双引号字符引起来。

  • 如果 QuoteStrings"none",则该函数不会使用双引号字符将变量引起来。

您只能将 QuoteStrings 名称-值参数用于带分隔符的文本文件。

与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding''system' 或标准字符编码方案名称。当您没有指定任何编码时,写入函数使用 UTF-8 来写入文件。

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

数据类型: char | string

仅限电子表格文件

全部折叠

要写入的工作表,指定为逗号分隔的对组,包含 'Sheet' 和一个包含工作表名称或正整数(指示工作表索引)的字符向量或字符串标量。工作表名称不能包含冒号 (:)。要确定电子表格文件中工作表的名称,请使用 sheets = sheetnames(filename)。有关详细信息,请参阅 sheetnames

按名称或索引指定要写入的工作表:

  • 名称 - 如果文件中不存在指定的工作表名称,则写入函数将在工作表集合的末尾添加一个新工作表。

  • 索引 - 如果指定的工作表索引大于工作表数,则写入函数会追加空工作表,直至工作簿中的工作表数等于工作表索引。写入函数还会生成一条警告,指示已添加新工作表。

您只能将 'Sheet' 名称-值对组用于电子表格文件。

示例: 'Sheet',2

示例: 'Sheet', 'MySheetName'

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

要写入的工作表的矩形部分,指定为逗号分隔的对组,包含 'Range' 和一个采用以下格式之一的字符向量或字符串标量。

Range 的值的格式 描述
'Corner1'

Corner1 指定要写入的区域的第一个单元格。写入函数从这个单元格开始写入数据。

示例:'Range','D2'

'Corner1:Corner2'

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

示例:'Range','D2:H4'

  • 如果指定的范围小于输入数据的大小,则写入函数只写入该范围能容纳的输入数据子集。

  • 如果指定的范围大于输入数据的大小,则写入函数将保留该区域的其余部分不变。

'Range' 名称-值对组只能与 Excel 文件配合使用。

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

数据类型: char | string

指明在写电子表格数据时是否启动 Microsoft® Excel(Windows 版)实例的标志,指定为以逗号分隔的对组,其中包含 '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

自动调整列宽,指定为 truefalse。如果指定值为 0false,则 writetimetable 不会自动调整列宽以适应单元格中的数据。

示例: 'AutoFitWidth',0

保留现有电子表格的单元格格式,指定为 truefalse。如果您指定 falsewritetimetable 将不会保留电子表格的单元格格式。格式包括字体、单元格边框和着色单元格等元素。

datetime 数据写入电子表格文件时,必须将 'PreserveFormat''UseExcel' 名称-值对组都设置为 true,才能保留现有单元格的格式。如果将 'UseExcel' 设置为 false,同时将 'PreserveFormat' 设置为 true,则当将 datetime 数据写入文件时,writetimetable 不会保留文件的现有单元格格式。

示例: 'PreserveFormat',false

仅 XML 文件

全部折叠

属性后缀,指定为以逗号分隔的对组,由 'AttributeSuffix' 和指示输入表中的哪些变量名称要作为属性写入输出 XML 文件的字符向量或字符串标量组成。

例如,对于输入表中的变量名称 AttName_att,您可以指定 'AttributeSuffix','_att' 来指示使用 'AttName' 作为输出 XML 文件中的属性来写出。

  • 如果未指定 'AttributeSuffix'writetimetable 默认将后缀为 'Attribute' 的变量作为属性写入输出 XML 文件中。

  • 如果指定为 'AttributeSuffix' 的值的变量与追加到输入表中变量名称的后缀匹配,则该后缀会从输出 XML 文件的变量名称中删除。例如,如果指定 'AttributeSuffix','_att',则输入表中名为 MyField_att 的变量将对应于 XML 文件中名为 MyField 的属性。

示例: 'AttributeSuffix','_att'

XML 行节点名称,指定为以逗号分隔的对组,由 'RowNodeName' 和字符向量或字符串标量组成,写入函数将其作为与输入表中的行对应的输出 XML 文件中的节点名称写入。如果未指定 RowNodeName,则写入函数会将 'row' 作为输出表中的行节点名称写入。

示例: 'TableNodeName','RootName'

XML 根节点名称,指定为以逗号分隔的对组,由 'TableNodeName' 和字符向量或字符串标量组成,写入函数将其作为输出 XML 文件中的根节点名称写入。如果未指定 TableNodeName,则写入函数会将 'table' 作为输出表中的根节点名称写入。

示例: 'TableNodeName','RootName'

算法

  • 有些情况下,writetimetable 函数创建的文件并不能准确表示输入数据。当您使用 readtimetable 函数来读取该文件时,就会注意到这一点。生成的数据可能不具备与原始数据完全相同的格式或内容。如果您需要原样保存时间表并在以后检索它,以便能与具有相同数据和组织形式的原始时间表精确匹配,则可将其另存为 MAT 文件。在以下情况下,writetimetable 输出的表数据不够精确:

    • writetimetable 使用 long g 格式输出数值数据,并将分类数据或字符数据输出为不带引号的文本。

    • writetimetable 将具有两个维度以上的变量输出为二维变量,并折叠尾部维度。

    • 对于元胞值变量,writetimetable 根据元胞内容的数据类型以不同方式输出变量。

      • 如果单元格的内容是数值、文本、逻辑值、分类、日期时间或持续时间等数据类型,则 writetimetable 函数会将内容输出到以分隔符分隔的多个字段中,一个元胞一行。

      • 否则,writetimetable 函数会输出一个空字段。

  • Excel 将 Inf 值转换为 65535。MATLAB®NaNNaT<undefined> 分类值以及 <missing> 字符串值转换为空单元格。

版本历史记录

在 R2019a 中推出