一、 EXCEL文件读写操作
1.1 读操作
命令:
<pre name="code" class="cpp"><span style="font-size:24px;">[data,text] = xlsread(FileName, SheetName, Range);</span>
参数说明:
输入参数:
FileName : 要读取的文件名,如果不在当前目录下,要加上路径。
SheetName : 要读取的sheet名,不加默认读取sheet1。
Range : 要读取的范围,不加默认读取整个文件。
参考示例 :
示例1
sheet1:
1 | 2 | 3 |
4 | 5 | 6 |
a | b | c |
d | e | f |
7 | 8 | 9 |
sheet2:
7 | 8 | 9 |
a | d | c |
10 | 11 | 12 |
<pre name="code" class="cpp"><span style="font-size:24px;">[fp_num, fp_txt] = xlsread('matlab_test.xlsx','sheet1');
fp_num
fp_txt
fp_num =
1 2 3
4 5 6
NaN NaN NaN
NaN NaN NaN
7 8 9
fp_txt =
'a' 'b' 'c'
'd' 'e' 'f'</span>
示例2
<pre name="code" class="cpp"><span style="font-size:24px;">[fp_num, fp_txt] = xlsread('matlab_test.xlsx','sheet1','A1:C1');
fp_num
fp_txt
fp_num =
1 2 3
fp_txt =
{}</span>
示例3
<pre name="code" class="cpp"><span style="font-size:24px;">[fp_num,fp_txt] = xlsread('matlab_test.xlsx','sheet2','A1:C1');
fp_num
fp_txt
fp_num =
7 8 9
fp_txt =
{}</span>
1.2 写操作
命令:
[STATUS,MESSAGE] = xlswrite(FILE,ARRAY,SHEET,RANGE)
参数说明
STATUS :
MESSAGE :
FILE : 文件名,若该文件不在当前matlab目录下,要加上路径
ARRAY : 要写入的数值或者字符(字符串)
RANGE : 要写入的位置或范围
示例1:
<span style="font-size:24px;">a = 1:5;
xlswrite('matlab_test.xlsx',a,'sheet1','A8');</span>
表示从EXCEL文件中的A8位置开始写,由于a是行向量,因此1:5共5个数分别写入A8:E8五个单元格
<span style="font-size:24px;">a = a'
xlswrite('matlab_test.xlsx',a,'sheet1','A8');</span>
则a为列向量,1:5共5个数值从EXCEL文件的A8开始写,分别写入A8:A12五个单元格
行向量只能在EXCEL文件中按行来写,列向量也只能在EXCEL文件中按列来写
<span style="font-size:24px;">a = 1:5;
xlswrite('matlab_test.xlsx',a,'sheet1','A8:A12');</span>
则A8:A12中写入的内容都是1
原因如下:
1:5在EXCEL中写的时候只能按行来,所以指定a占据A8:A12,则表示占据了5行
数据是这么排列的
A B C D E
8 1 2 3 4 5
9 1 2 3 4 5
10 1 2 3 4 5
11 1 2 3 4 5
12 1 2 3 4 5
由于只能写入A8:A12这5个单元格,所以最后的结果就是A8:A12都写入了1,其余单元格没有写入任何值.
要想使一个矩阵写入的话,可以只指定一个开始的单元格作为左上角的数据存入的位置。
要想使一个行向量或者列向量重复写入在单元格中,如下:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
则可以在写入的时候指定一个矩阵,则行(列)向量在写入的时候就会自己重复写,最终填满整个矩阵,
这样写比使用循环执行效率更高,指定矩阵的方法是给出左上角和右下角的坐标就可以了。如:B8:F12
<span style="font-size:24px;">xlswrite('matlab_test.xlsx',a,'sheet1','B8:F12');</span>