writetimetable
将时间表写入文件
说明
writetimetable( 将时间表 TT)TT 写入以逗号分隔的文本文件。文件名为时间表的工作区变量名称,附加扩展名 .txt。如果 writetimetable 无法根据输入时间表名称构造文件名,那么它会写入 timetable.txt 文件中。
TT 中每个变量的每一列都将成为输出文件中的列。TT 的变量名称将成为文件第一行的列标题。writetimetable 函数会覆盖任何现有文件。
writetimetable(___, 支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,您可以指定是否将变量名称写入为输出文件中的列标题。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
1 sec 98.0000 120
2 sec 97.5000 111
3 sec 97.9000 119
4 sec 98.1000 117
5 sec 97.9000 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
01-Jan-2014 98.0000 120
01-Jan-2015 97.5000 111
01-Jan-2016 97.9000 119
01-Jan-2017 98.1000 117
01-Jan-2018 97.9000 116
将该表写入电子表格文件 'TT.xlsx'。默认情况下,writetimetable 函数会写入文件中的第一个工作表。使用 'Sheet' 名称-值对组指定要写入到的工作表。
writetimetable(TT,'TT.xlsx','Sheet',2)
读取并显示文件内容。
readtimetable('TT.xlsx','Sheet',2)
ans=5×2 timetable
01-Jan-2014 00:00:00 98.0000 120
01-Jan-2015 00:00:00 97.5000 111
01-Jan-2016 00:00:00 97.9000 119
01-Jan-2017 00:00:00 98.1000 117
01-Jan-2018 00:00:00 97.9000 116
输入参数
输入时间表。
文件名,指定为字符向量或字符串标量。
根据您写入的位置,filename 可以采用以下形式之一。
位置 | 形式 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 当前文件夹 | 要写入当前文件夹,请在 示例: | ||||||||
其他文件夹 | 要写入不同于当前文件夹的文件夹,请在 示例: 示例: | ||||||||
远程位置 | 要写入远程位置,
根据远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
如果
filename包含文件扩展名,则写入函数基于扩展名确定文件格式。否则,写入函数会创建一个逗号分隔的文本文件,并附加扩展名.txt。您也可以指定不带文件扩展名的filename,然后添加'FileType'名称-值对组参量来指示文件类型。
如果
filename不存在,则写入函数会创建该文件。如果
filename是一个现有文本文件的名称,则写入函数将覆盖该文件。如果
filename是一个现有电子表格文件的名称,则写入函数会将数据写入指定位置,但不会覆盖输入数据范围之外的任何值。
数据类型: char | string
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: writetimetable(TT,WriteVariableNames=false) 指定不将变量名称作为输出文件的第一行包含在内。
数据位置
要写入的工作表,指定为逗号分隔的对组,包含 'Sheet' 和一个包含工作表名称或正整数(指示工作表索引)的字符向量或字符串标量。工作表名称不能包含冒号 (:)。要确定电子表格文件中工作表的名称,请使用 sheets = sheetnames(filename)。有关详细信息,请参阅 sheetnames。
按名称或索引指定要写入的工作表:
名称 - 如果文件中不存在指定的工作表名称,则写入函数将在工作表集合的末尾添加一个新工作表。
索引 - 如果指定的工作表索引大于工作表数,则写入函数会追加空工作表,直至工作簿中的工作表数等于工作表索引。写入函数还会生成一条警告,指示已添加新工作表。
您只能将 'Sheet' 名称-值对组用于电子表格文件。
示例: 'Sheet',2
示例: 'Sheet', 'MySheetName'
数据类型: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
要写入的工作表的矩形部分,指定为逗号分隔的对组,包含 'Range' 和一个采用以下格式之一的字符向量或字符串标量。
Range 的值的格式 | 描述 |
|---|---|
' |
示例: |
' |
示例:
|
'Range' 名称-值对组只能与 Excel 文件配合使用。
示例: 'Range', 'A1:F10'
数据类型: char | string
XML 根节点名称,指定为以逗号分隔的对组,由 'TableNodeName' 和字符向量或字符串标量组成,写入函数将其作为输出 XML 文件中的根节点名称写入。如果未指定 TableNodeName,则写入函数会将 'table' 作为输出表中的根节点名称写入。
示例: 'TableNodeName','RootName'
文件信息
文件的类型,指定为 "text"、"spreadsheet"、"json" 或 "xml"。
FileType 名称-值参量必须与 filename 输入参量结合使用。如果 filename 输入参量包含标准文件扩展名,则无需指定 FileType 名称-值参量。以下标准文件扩展名由写入函数识别:
.txt、.dat或.csv(带分隔符的文本文件).xls、.xlsm或.xlsx(适用于 Excel 电子表格文件).xlsb(适用于安装了 Windows Excel 的系统上支持的 Excel 电子表格文件).json(适用于 JavaScript 对象表示法 (JSON) 文件).xml(适用于 XML 文件)
数据类型: char | string
与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding' 和 'system' 或标准字符编码方案名称。当您没有指定任何编码时,写入函数使用 UTF-8 来写入文件。
示例: 'Encoding','UTF-8' 使用 UTF-8 作为编码。
数据类型: char | string
指明在写电子表格数据时是否启动 Microsoft Excel(Windows 版)实例的标志,指定为以逗号分隔的对组,其中包含 'UseExcel' 和 true 或 false。
您可以将 'UseExcel' 参数设置为下列值之一:
true- 写入函数在写入文件时启动 Microsoft Excel 的实例。false- 写入函数在写入文件时不启动 Microsoft Excel 的实例。在此模式下操作时,写入功能支持的文件格式和交互式功能(例如公式和宏)有所不同。
UseExcel |
|
|
|---|---|---|
| 支持的文件格式 |
|
|
支持交互功能,例如公式和宏 | 是 | 否 |
在 Windows 平台上写入电子表格文件时,如果您想启动 Microsoft Excel 实例,则将 'UseExcel' 参数设置为 true。
UseExcel 在非交互式自动化环境中不受支持。
写入模式,指定为以逗号分隔的对组,该对组由 'WriteMode' 和一个字符向量或字符串标量组成。根据文件类型选择一种写入模式。
文件类型 | 写入模式 |
|---|---|
| 文本文件 |
如果您指定的文件不存在,则写入函数会创建数据并将数据写入新文件。 |
| 电子表格文件 |
|
当
WriteVariableNames设置为true时,写入函数不支持'append'写入模式。对于电子表格文件:
当写入模式为
'append'时,写入函数不支持Range参数。如果您指定的文件不存在,则写入函数将执行与
'replacefile'相同的动作。
示例: 'WriteMode','append'
数据类型: char | string
变量和行
指示将变量名称写入为列标题的指示符,指定为逗号分隔的对组,其中包含 'WriteVariableNames' 和 true 或 false。
指示符 | 行为 |
|---|---|
| 写入函数将变量名称作为输出的列标题包含在内。这是默认行为。 |
| 写入函数不会在输出中包含变量名称。 |
XML 行节点名称,指定为以逗号分隔的对组,由 'RowNodeName' 和字符向量或字符串标量组成,写入函数将其作为与输入表中的行对应的输出 XML 文件中的节点名称写入。如果未指定 RowNodeName,则写入函数会将 'row' 作为输出表中的行节点名称写入。
示例: 'TableNodeName','RootName'
数据格式化
用于写入日期的区域设置,指定为字符串标量或 形式的字符向量,其中:xx_YY
xx是指示语言的小写 ISO 639-1 双字母代码。YY是指示国家/地区的大写 ISO 3166-1 alpha-2 代码。
使用 DateLocale 指定 writetimetable 写入月份和星期几的名称及缩写所用的区域设置。但是,只要日期可以写为 Excel 格式的日期,该函数就会忽略 DateLocale 值。
下表列出了区域设置的某些常用值。
| 区域设置 | 语言 | 国家/地区 |
|---|---|---|
"de_DE" | 德语 | 德国 |
"en_GB" | 英语 | 英国 |
"en_US" | 英语 | 美国 |
"es_ES" | 西班牙语 | 西班牙 |
"fr_FR" | 法语 | 法国 |
"it_IT" | 意大利语 | 意大利 |
"ja_JP" | 日语 | 日本 |
"ko_KR" | 韩语 | 韩国 |
"nl_NL" | 荷兰 | 荷兰 |
"zh_CN" | 简体中文 | 中国 |
示例: DateLocale="ja_JP"
用于写入带引号文本的指示符,指定为 "minimal"、"all" 或 "none"。
如果
QuoteStrings是"minimal",则该函数会将包含分隔符、换行符或双引号字符的任何变量用双引号字符引起来。如果
QuoteStrings是"all",则该函数会将所有文本、分类、日期时间和持续时间变量用双引号字符引起来。如果
QuoteStrings是"none",则该函数不会使用双引号字符将变量引起来。
您只能将 QuoteStrings 名称-值参量用于带分隔符的文本文件。
自 R2026a 起
在输出 JSON 文件中保留 Inf 和 NaN 值,指定为数值或逻辑值 1 (true) 或 0 (false)。默认情况下,writetimetable 将 Inf 和 NaN 值写入到输出 JSON 文件。将此参量指定为 false 以将所有 Inf 和 NaN 值作为 JSON null 值写入。
示例: PreserveInfAndNaN=false
文件格式设置
字段分隔符,指定为逗号分隔的对组,由 'Delimiter' 和一个字符向量或字符串标量组成,该字符串标量包含以下设定符之一:
设定符 | 字段分隔符 |
|---|---|
| 逗号。这是默认行为。 |
| 空格 |
| 制表符 |
| 分号 |
| 垂直条 |
您只能将 'Delimiter' 名称-值对组用于带分隔符的文本文件。
示例: 'Delimiter','space'
数据类型: char | string
属性后缀,指定为以逗号分隔的对组,由 'AttributeSuffix' 和指示输入表中的哪些变量名称要作为属性写入输出 XML 文件的字符向量或字符串标量组成。
例如,对于输入表中的变量名称 AttName_att,您可以指定 'AttributeSuffix','_att' 来指示使用 'AttName' 作为输出 XML 文件中的属性来写出。
如果未指定
'AttributeSuffix',writetimetable默认将后缀为'Attribute'的变量作为属性写入输出 XML 文件中。如果指定为
'AttributeSuffix'的值的变量与追加到输入表中变量名称的后缀匹配,则该后缀会从输出 XML 文件的变量名称中删除。例如,如果指定'AttributeSuffix','_att',则输入表中名为MyField_att的变量将对应于 XML 文件中名为MyField的属性。
示例: 'AttributeSuffix','_att'
保留现有电子表格的单元格格式,指定为 true 或 false。如果您指定 false,writetimetable 将不会保留电子表格的单元格格式。格式包括字体、单元格边框和着色单元格等元素。
将 datetime 数据写入电子表格文件时,必须将 'PreserveFormat' 和 'UseExcel' 名称-值对组都设置为 true,才能保留现有单元格的格式。如果将 'UseExcel' 设置为 false,同时将 'PreserveFormat' 设置为 true,则当将 datetime 数据写入文件时,writetimetable 不会保留文件的现有单元格格式。
示例: 'PreserveFormat',false
自动调整列宽,指定为 true 或 false。如果指定值为 0 或 false,则 writetimetable 不会自动调整列宽以适应单元格中的数据。
示例: 'AutoFitWidth',0
自 R2026a 起
在输出 JSON 文件中缩进文本,指定为数值或逻辑值 1 (true) 或 0 (false)。默认情况下,writetimetable 使用四个空格的缩进来格式化 JSON 文件中的文本。默认情况下,writetimetable 使用四个空格的缩进来格式化 JSON 文件中的文本。如果您将 PrettyPrint 指定为 false,则 writetimetable 在写入 JSON 文本时不使用缩进或新行。
算法
有些情况下,
writetimetable函数创建的文件并不能准确表示输入数据。当您使用readtimetable函数来读取该文件时,就会注意到这一点。生成的数据可能不具备与原始数据完全相同的格式或内容。如果您需要原样保存时间表并在以后检索它,以便能与具有相同数据和组织形式的原始时间表精确匹配,则可将其另存为 MAT 文件。在以下情况下,writetimetable输出的表数据不够精确:writetimetable使用long g格式输出数值数据,并将分类数据或字符数据输出为不带引号的文本。writetimetable将具有两个维度以上的变量输出为二维变量,并折叠尾部维度。对于元胞值变量,
writetimetable根据元胞内容的数据类型以不同方式输出变量。如果单元格的内容是数值、文本、逻辑值、分类、日期时间或持续时间等数据类型,则
writetimetable函数会将内容输出到以分隔符分隔的多个字段中,一个元胞一行。否则,
writetimetable函数会输出一个空字段。
Excel 将
Inf值转换为65535。MATLAB® 将NaN、NaT和<undefined>分类值以及<missing>字符串值转换为空单元格。
版本历史记录
在 R2019a 中推出将时间表数据写入 JSON 文件。指定可选的名称-值参量以控制导出行为。例如,如果您要将数据写入 JSON 文件而不使用缩进或新行对其进行格式化,则将 PrettyPrint 设置为 false。
另请参阅
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)