MATLAB与Excel文件的交换

前言

Excel是一款非常优秀的通用表格软件,在学习、工作与科研中大量的数据可能都是以Excel表格的方式存储的。利用MATLAB强大的数值计算功能处理Excel中的数据,首要解决的问题就是如何将Excel中的数据导人到MATLAB中或将MATLAB数值计算的结果
转存人Excel中。

1.调用xlsfinfo函数获取文件信息

在读取Excel目标数据文件前,可以通过xlsfinfo函数获取该文件的相关信息,为后
续操作获得有效信息(例如文件类型、文件内部结构,相关的软件版本等)。

xlsfinfo函数的调用格式如下:

[typ, desc, fmt] = xlsfinfo(filename)

其中,输人参数filename为字符串变量,用来指定目标文件的文件名和文件路径。若目标文件在MATLAB搜索路径下,filename为文件名字符串即可,例如’abc. xls’;若目标文件不在MATLAB搜索路径下,filename中还应包含文件的完整路径。
输出参数的含义如下:

typ:目标文件类型;
desc:目标文件内部表名称( sheetname);
fmt:支持目标文件的软件版本。

调用 xlsfinfo 函数读取Excel文件。

程序命令如下:

[typ, desc, fmt] = xlsfinfo( 'test')

在这里插入图片描述

2.调用xlsread函数读取数据

数据导人向导在导人Excel文件时调用了xlsread 函数, xlsread函数用来读取Excel工作表中的数据。当用户系统安装有Excel时,MATLAB创建Excel服务器,通过服务器接口读取数据;当用户系统没有安装Excel或MATLAB不能访问COM服务器时,MATLAB利用基本模式( basic mode)读取数据,即把Excel文件作为二进制映像文件读取进来,然后读取其中的数据。xlsread 函数的调用格式如下:

  1. num = xlsread( filename)

读取由filename指定的Excel文件中第1个工作表中的数据,返回一个双精度矩阵num。输入参数filename是由单引号括起来的字符串,用来指定目标文件的文件名和文件路径。

如果Excel工作表的顶部或底部有一个或多个非数字行,左边或右边有一个或多个非数字列,甚至对于内部的行或列,即使它有部分非数字单元格,甚至全部都是非数字单元格,xlsread也不会忽略这样的行或列。在读取的矩阵num中,非数字单元格位置用NaN代替。

  1. num = xlsread(filename, -1)

在Excel界面中打开数据文件,允许用户交互式选取要读取的工作表以及工作表中需要导人的数据区域。这种调用会弹出一个提示界面,提示用户选择Excel工作表中的数据区域。在某个工作表上单击并拖动鼠标即可选择数据区域,然后单击提示界面上的“确定”按钮即可导入所选区域的数据。

  1. num = xlsread( filename, sheet)

用参数sheet指定读取的工作表。sheet 可以是单引号括起来的字符串,也可以是正整数。当是字符串时,用来指定工作表的名字;当是正整数时,用来指定工作表的序号。

  1. num = xlsread( filename, range)

用参数range指定读取的单元格区域。range 是字符串,为了区分sheet和range参数,range参数必须是包含冒号,形如’C1 :C2’的表示区域的字符串。若range参数中没有冒号,xlsread就会把它作为工作表的名字或序号,这就可能导致错误。

  1. num = xlsread(filename, sheet, range)

同时指定工作表和工作表区域。

  1. num = xlsread( filename, sheet, range, ‘basic’)

用基本模式(basic mode)读取数据。当用户系统没有安装Excel时,用这种模式导入数据,此时导人功能受限,range参数的值会被忽略,可以设定range参数的值为空字符串(’’),而sheet参数必须是字符串,此时读取的是整个工作表中的数据。

  1. num = xlsread( filename, …,functionhandle)

在读取电子表格里的数据之前,先调用由函数句柄functionhandle指定的函数。它允许用户在读取数据之前对数据进行一些操作,例如在读取之前变换数据类型。用户可以编写自己的函数,把函数句柄传递给xlsread函数。当调用xlsread函数时,它从电子表格读取数据,把用户函数作用在这些数据上,然后返回最终结果。xlsread函数在调用用户函数时,它通过Excel服务器Range对象的接口访问电子表格的数据,所以用户函数必须包括作为输人输出的接口。

3.调用 xlswrite函数把数据写入Excel文件

xlswrite函数用来将数据矩阵M写人Excel文件,其主要调用方式如下:

xlswrite(filename, M)
xlswrite(filename, M, sheet )
xlswrite(filename, M, range)
xlswrite(filename, M, sheet, range)
status = xlswrite(filename, ... )
[status, message] = xlswrite(filename, ...)

其中输人参数filename为字符串变量,用来指定文件名和文件路径。若filename指定的文件不存在,则创建-一个新文件,文件的扩展名决定了Excel 文件的格式。若扩展名为“. xls" ,则创建一个Excel 2003下的文件;若扩展名为“. xlsx". xIsb"或“. xlsm" ,则创建一个Excel 2007格式的文件。M可以是一个m X n的数值型矩阵或字符型矩阵,也可以是一个m X n的元胞数组,此时每一个元胞只包含一个元素。由于不同版本的Excel所能支持的最大行数和列数是不一样的,所以能写人的最大矩阵的大小取决于Excel的版本。

sheet用来指定工作表,可以是代表工作表序号的正整数,也可以是代表工作表名称的字符串。需要注意的是,sheet参数中不能有冒号。若由sheet指定名称的工作表不存在,则在所有工作表的后面插入一个新的工作表。若sheet为正整数,并且大于工作表的总数,则追加多个空的工作表直到工作表的总数等于sheet。这两种情况都会产生一个警告信息,表明增加了新的工作表。

range用来指定单元格区域。对于xlswrite函数的第3种调用,range参数必须是包含冒号,形如"C1:C2’的表示单元格区域的字符串。当同时指定sheet 和range参数时(如第4种调用),range可以是形如’A2’的形式。xlswrite 函数不能识别已命名区域的名称。range指定的单元格区域的大小应与M的大小相匹配,若单元格区域超过了M的大小,则多余的单元格用#N/A填充,若单元格区域比M的大小还要小,则只写人与单元格区域相匹配的部分数据。

输出status反映了写操作完成的情况,若成功完成,则status 等于1(真),否则,status等于0(假)。只有在指定输出参数的情况下,xlswrite函数才返回status的值。输出message中包含了写操作过程中的警告和错误信息,它是一个结构体变量,有两个字段: message 和identifier. 其中message 是包含警告和错误信息的字符串,identifier也是字符串,包含了警告和错误信息的标识符。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值