Matlab 将数据写入excel文件
函数:writematrix
功能:将矩阵写入文件
语法
writematrix(A)
writematrix(A,filename)
writematrix(___,Name,Value)
说明
writematrix(A)
将同构数组 A
写入以逗号分隔的文本文件。文件名为数组的工作区变量名称,附加扩展名 .txt
。如果 writematrix
无法根据数组名称构造文件名,那么它会写入 matrix.txt
文件中。
A
中每个变量的每一列都将成为输出文件中的列。writematrix
函数会覆盖任何现有文件。
writematrix(A,
filename)
写入具有 filename
指定的名称和扩展名的文件。
writematrix
根据指定扩展名确定文件格式。扩展名必须是下列格式之一:
-
.txt
、.dat
或.csv
(适用于带分隔符的文本文件) -
.xls
、.xlsm
或.xlsx
(适用于 Excel® 电子表格文件) -
.xlsb
(适用于安装了 Windows® Excel 的系统上支持的 Excel 电子表格文件)
writematrix(___,Name,Value)
在包括上述语法中任意输入参数的同时,还可通过一个或多个 Name,Value
对组参数指定其他选项来将数组写入文件中。
实例1:将矩阵写入到文本文件
创建一个矩阵,将其写入以逗号分隔的文本文件,然后用不同分隔符将该矩阵写入另一个文本文件。
在工作区中创建一个矩阵。
M = magic(5)
M = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
将矩阵写入逗号分隔的文本文件,并显示文件内容。writematrix 函数将输出名为 M.txt 的文本文件。
writematrix(M);
type 'M.txt'
17,24,1,8,15
23,5,7,14,16
4,6,13,20,22
10,12,19,21,3
11,18,25,2,9
要用不同分隔符将同一矩阵写入文本文件,请使用 'Delimiter' 名称-值对组。
writematrix(M,'M_tab.txt','Delimiter','tab');
type 'M_tab.txt'
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
实例2:将矩阵写入电子表格文件
创建一个矩阵,将其写入电子表格文件,然后读取并显示文件内容。
在工作区中创建一个矩阵。
M = magic(5)
M = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
将该矩阵写入一个电子表格文件。
writematrix(M,'M.xls')
从 M.xls 读取并显示矩阵。
readmatrix('M.xls')
ans = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
实例3:将矩阵写入指定的工作表和范围
创建一个矩阵,并将其写入电子表格文件中的指定工作表和范围。
在工作区中创建一个矩阵。
M = magic(5)
M = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
将该矩阵写入 M.xls 文件中的第二个工作表,从第三行开始写入。
writematrix(M,'M.xls','Sheet',2,'Range','A3:E8')
读取并显示该矩阵。
readmatrix('M.xls','Sheet',2,'Range','A3:E8')
ans = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
实例4:将数据追加到电子表格
在电子表格中现有数据的下方追加数据数组。
在工作区中创建两个矩阵。
M1 = magic(5)
M1 = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
M2 = [5 10 15 20 25; 30 35 40 45 50]
M2 = 2×5
5 10 15 20 25
30 35 40 45 50
将矩阵 M1 写入一个电子表格文件 M.xls.
writematrix(M1,'M.xls')
将矩阵 M2 中的数据追加到电子表格文件中现有数据的下方。
writematrix(M2,'M.xls','WriteMode','append')
阅读电子表格文件并显示矩阵。
readmatrix('M.xls')
ans = 7×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
5 10 15 20 25
30 35 40 45 50
实例5:将矩阵数据追加到文本文件
在文本文件中现有数据的下方追加数据数组。
在工作区中创建两个矩阵。
fibonacci1 = [1 1 2 3; 5 8 13 21; 34 55 89 144]
fibonacci1 = 3×4
1 1 2 3
5 8 13 21
34 55 89 144
fibonacci2 = [233 377 610 987]
fibonacci2 = 1×4
233 377 610 987
将矩阵 fibonacci1 写入文本文件 fibonacci.txt.
writematrix(fibonacci1,'fibonacci.txt')
将 fibonacci2 中的数据追加到文本文件中现有数据的下方。
writematrix(fibonacci2,'fibonacci.txt','WriteMode','append')
读取文本文件并显示矩阵。
readmatrix('fibonacci.txt')
ans = 4×4
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
输入参数
A
- 输入数据
矩阵
输入数据,指定为矩阵。
filename
- 文件名
字符向量 | 字符串标量
文件名,指定为字符向量或字符串标量。
根据您写入的位置,filename
可以采用以下形式之一。
位置 | 形式 | ||||||||
---|---|---|---|---|---|---|---|---|---|
当前文件夹 | 要写入当前文件夹,请在 示例: | ||||||||
其他文件夹 | 要写入不同于当前文件夹的文件夹,请在 示例: 示例: | ||||||||
远程位置 | 要写入远程位置,
根据远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
-
如果
filename
包含文件扩展名,则写入函数基于扩展名确定文件格式。否则,写入函数会创建一个逗号分隔的文本文件,并附加扩展名.txt
。您也可以指定不带文件扩展名的filename
,然后添加'FileType'
名称-值对组参数来指示文件类型。 -
如果
filename
不存在,则写入函数会创建该文件。 -
如果
filename
是一个现有文本文件的名称,则写入函数将覆盖该文件。 -
如果
filename
是一个现有电子表格文件的名称,则写入函数会将数据写入指定位置,但不会覆盖输入数据范围之外的任何值。
数据类型: char
| string
名称-值参数
示例: 'FileType',text
指示变量名称不应作为输出文件的第一行包含在内。
指定可选的、以逗号分隔的 Name,Value
对组参数。Name
为参数名称,Value
为对应的值。Name
必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN
所示。
文本和电子表格文件
FileType
- 文件类型
'text'
| 'spreadsheet'
文件类型,指定为逗号分隔的对组,其中包含 'FileType'
和一个包含 'text'
或 'spreadsheet'
的字符向量或字符串。
'FileType'
名称-值对组必须与 filename
输入参数配合使用。如果 filename 输入参数包含标准文件扩展名,则无需指定 'FileType'
名称-值对组参数。以下标准文件扩展名由写入函数识别:
-
.txt
、.dat
或.csv
(适用于带分隔符的文本文件) -
.xls
、.xlsm
或.xlsx
(适用于 Excel 电子表格文件) -
.xlsb
(适用于安装了 Windows Excel 的系统上支持的 Excel 电子表格文件)
示例: 'FileType','spreadsheet'
数据类型: char
| string
DateLocale
- 用于写入日期的区域设置
字符向量 | 字符串标量
用于写入日期的区域设置,指定为逗号分隔的对组,其中包含 'DateLocale'
和一个字符向量或字符串标量。在将 datetime
值写入文件时,请使用 DateLocale
指定 writematrix
写入月和星期几的名称以及缩写所用的区域设置。该字符向量或字符串采用
形式,其中 xx
_YY
xx
是用于指示语言的小写 ISO 639-1 双字母代码,YY
是用于指示国家/地区的大写 ISO 3166-1 alpha-2 代码。有关区域设置的常见值的列表,请参阅 datetime 函数的 Locale
名称-值对组参数。
当日期可以写为 Excel 格式的日期时,写入函数将忽略 'DateLocale'
参数值。
示例: 'DateLocale','ja_JP'
数据类型: char
| string
WriteMode
- 写入模式
字符向量 | 字符串标量
写入模式,指定为以逗号分隔的对组,该对组由 'WriteMode'
和一个字符向量或字符串标量组成。根据文件类型选择一种写入模式。
文件类型 | 写入模式 |
---|---|
文本文件 |
如果您指定的文件不存在,则写入函数会创建数据并将数据写入新文件。 |
电子表格文件 |
|
-
当
WriteVariableNames
设置为true
时,写入函数不支持'append'
写入模式。 -
对于电子表格文件:
-
当写入模式为
'append'
时,写入函数不支持Range
参数。 -
如果您指定的文件不存在,则写入函数将执行与
'replacefile'
相同的动作。
-
示例: 'WriteMode','append'
数据类型: char
| string
仅限文本文件
Delimiter
- 字段分隔符
字符向量 | 字符串标量
字段分隔符,指定为逗号分隔的对组,由 'Delimiter'
和一个字符向量或字符串标量组成,该字符串标量包含以下设定符之一:
设定符 | 字段分隔符 |
---|---|
| 逗号。这是默认行为。 |
| 空格 |
| 制表符 |
| 分号 |
| 垂直条 |
您只能将 'Delimiter'
名称-值对组用于带分隔符的文本文件。
示例: 'Delimiter','space'
数据类型: char
| string
QuoteStrings
- 用于写入引用文本的指示符
true
| false
用于写入引用文本的指示符,指定为 'QuoteStrings'
和 true
或 false
。
-
如果
'QuoteStrings'
为true
,则该函数将文本括在双引号字符中,并用两个双引号字符替换文本两侧的任何双引号字符。这两个双引号字符也称为转义字符。 -
如果
'QuoteStrings'
为false
,则按原样写入文本。 -
如果未指定
'QuoteStrings'
,该函数将检查数据中由'Delimiter'
名称-值参数指定的分隔符。如果在一列中找到分隔符,该列中的每个元素都将带双引号写入。
您只能将 'QuoteStrings'
名称-值参数用于带分隔符的文本文件。
Encoding
- 字符编码方案
'UTF-8'
(默认) | 'ISO-8859-1'
| 'windows-1251'
| 'windows-1252'
| ...
与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding'
和 'system'
或标准字符编码方案名称。当您没有指定任何编码时,写入函数使用 UTF-8 来写入文件。
示例: 'Encoding','UTF-8'
使用 UTF-8 作为编码。
数据类型: char
| string
仅限电子表格文件
Sheet
- 要写入的工作表
字符向量 | 字符串标量 | 正整数
要写入的工作表,指定为逗号分隔的对组,包含 '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 的值的格式 | 说明 |
---|---|
' |
示例: |
' |
示例:
|
'Range'
名称-值对组只能与 Excel 文件配合使用。
示例: 'Range'
, 'A1:F10'
数据类型: char
| string
UseExcel
- 用于启动 Windows 版 Microsoft Excel 实例的标志
false
(默认) | true
指明在写电子表格数据时是否启动 Microsoft® Excel(Windows 版)实例的标志,指定为以逗号分隔的对组,其中包含 'UseExcel'
和 true
或 false
。
您可以将 'UseExcel'
参数设置为下列值之一:
-
true
- 写入函数在写入文件时启动 Microsoft Excel 的实例。 -
false
- 写入函数在写入文件时不启动 Microsoft Excel 的实例。在此模式下操作时,写入功能支持的文件格式和交互式功能(例如公式和宏)有所不同。
UseExcel |
|
|
---|---|---|
支持的文件格式 |
|
|
支持交互功能,例如公式和宏 | 是 | 否 |
在 Windows 平台上写入电子表格文件时,如果您想启动 Microsoft Excel 实例,则将 'UseExcel'
参数设置为 true
。
AutoFitWidth
- 自动调整列宽
true
(默认) | false
自动调整列宽,指定为 true
或 false
。如果指定值为 0
或 false
,则 writematrix
不会自动调整列宽以适应单元格中的数据。
示例: 'AutoFitWidth'
,0
PreserveFormat
- 保留单元格格式
true
(默认) | false
保留现有电子表格的单元格格式,指定为 true
或 false
。如果您指定 false
,writematrix
将不会保留电子表格的单元格格式。格式包括字体、单元格边框和着色单元格等元素。
将 datetime
数据写入电子表格文件时,必须将 'PreserveFormat'
和 'UseExcel'
名称-值对组都设置为 true
,才能保留现有单元格的格式。如果将 'UseExcel'
设置为 false
,同时将 'PreserveFormat'
设置为 true
,则当将 datetime
数据写入文件时,writematrix
不会保留文件的现有单元格格式。
示例: 'PreserveFormat'
,false
局限性
-
要将
'PreserveFormat'
名称-值对组设置为true
,您必须将'UseExcel'
名称-值对组设置为true
。
算法
有些情况下,writematrix
函数创建的文件不能准确表示输入数据。当您使用 readmatrix 函数来读取该文件时,就会注意到这一点。生成的数据可能不具备与原始数组完全相同的格式或内容。如果您需要原样保存数组并在以后检索它,以便能与具有相同数据和组织形式的原始数组精确匹配,则可将其另存为 MAT 文件。在以下情况下,writematrix
输出的数据不够精确:
-
writematrix
使用long g
格式输出数值数据,并将分类数据或字符数据输出为不带引号的文本。 -
writematrix
将具有两个维度以上的数组输出为二维数组,并折叠尾部维度。
实例6:将 yflt 中的数据以列的方式写入到 excel 中:
% %%%% 将数据写入表格.
[row,col] = size(yflt);
if(row==1)
yflt_T = yflt';
else
yflt_T = yflt;
end
W_xyw = [ 1 2 3 3 7 6];
pathout = 'W_xyw.xlsx';
Title = ["nPLCs", "VPP", "RMS"];
% xlswrite(pathout,Title,1,'A1');
writematrix(Title, pathout, 'Range','1:3');%将数据写入表格.
% writematrix(yflt_T, pathout,'WriteMode','overwritesheet');%将数据写入表格.
writematrix(yflt_T, pathout,'WriteMode','append');%将数据追加到表格现有数据下方.
另请参阅
writetable | writetimetable | readmatrix | writecell
writetable | writetimetable | readmatrix | writecell