2.1 数据交互函数
2.1.1 获取文件信息xlsfinfo函数
在读取Excel目标数据文件前,可以通过xlsfmfo函数获取该文件的相关信息,为MATLAB函数的后续操作提供有效信息(如文件类型、文件内部结构、相关的软件版本等)。
xlsfinfo函数语法:
[typ, desc, fmt]=xlsfinfo(filename)
输入参数filename目标文件地址(若文件在MATLAB当前的工作目录中,则filename为“文件名”:如果文件不在MATLAB当前的工作目录中,则filename为“文件路径\文件名”, 例如“E:\other\案例书籍\abC.xls”)。
输出参数如下。
● typ:目标文件类型。
● desc:目标文件内部表名称(sheetname)。
● fmt:支持目标文件的软件版本。
【例2-1】测试函数M文件CaseXlsfinfo.m。

结果输出:

注:由于MATLAB 2009a与Excel 2007数据交互时,每次使用xls类函数都会重新开启一个Excel进程,若反复使用xls类函数则会导致系统中多个Excel进程并存,消耗系统资源,导致系统运行速度下降,故作者使用system('taskkill/F/IM EXCEL.EXE')调用Windows的taskkill函数关闭刚使用的Excel进程。在2011以后的版本中,经测试,上述问题已不存在。
2.1.2 读取数据xlsread函数
MATLAB从Excel中读取数据的函数为xIsread,xlsread函数是使用频率较高的函数之一。xlsread函数语法如下:
1. [data, textdate]=xlsread(filename)
输入参数Filename为目标文件地址(若文件在MATLAB当前的工作目录中,Filename为“文件名”,如果文件不在MATLAB当前的工作目录中,则lename为“文件路径\文件名”)。
输出参数如下。
● Data:数值数据。
● Textdate:文字数据。
目标文件Excel的内容如表2-1所示。


【例2-2】测试函数M文件CaseXlsRead.m,测试Exce1.xls文件内容如表2-1所示。

2. data=xlsread(filename.sheet, range)
输入参数如下。
● Filename:门标文件地址(若文件在MATLAB当前的工作目录中,Filename为“文件名”,如果文件不在MATLAB当前的工作目录中,Filename为“文件路径\文件名")。
● Sheet:数据表名称,例如Exccl默认表名称shcet1。
● Range:数据所在位置,例如AI:B13。
输出参数为Data:数值数据。
【例2-3】测试函数M文件CaseXIsRead.m。

注:data=xlsread(filename,sheet,range)形式的xlsread函数无法读取指定单元格中的非数值内容。若Excel中的两列数据一列偏大、一列偏小,按[data,textdate]=xlsread(filename)方法导入后,偏大的用科学计数法表示,偏小的就变成了0.0000。建议在读取前将Excel中的数值格式修改为普通格式。
2.1.3 写入数据xlswrite函数
MATLAB往Excel中写入数据的函数为xlswrite 。
xlswrite函数语法:
[status,message]=xlswrite(filename,M,sheet,range)
输入参数如下。
● Filename:目标文件地址(若文件在MATLAB当前的工作目录中,Filename 为“文件名”,如果文件不在MATLAB当前的工作日录中,filename为“文件路径\文件名”)。
● M:写入Excel中的数据,M存储数据的变量名称。
● Sheet:写入Excel中的sheet名称(可选,若空默认为sheet1).
● Range:写入Excel中的单元格区域(可选,若空默认“AI”)输出参数如下。
● status:写入状态,“1”表示写入成功,“0”表示写入失败。
● message:若失败,则显现失败信息。

表示目标文件被锁定无法写入(目标文件被其他程序占用时,系统会锁定目标文件),解决方法是关闭Excel程序。若还出现上述问题,则可在任务管理器中结束ExceI进程。
【例2-4】测试函数M文件CaseXlsWrite.m。

结果输出:

如果写入的是字符,则使用'aa'与{'aa'}的效果完全不同,'aa'得到的结果是ExceI的两个单元格都是'a',{'aa'}得到的结果是ExceI的一个单元格是'aa'。

2.1.4 交互界面uümport函数
新版的MATLAB提供了界面化的数据交互功能。Uiimport函数的语法如下:
1. uiimport
在命令窗口输入uiimport命令,出现文件选择窗口。
2. uiimport(filename)
在命令窗口输入uiimport(filename),表示打开数据文件filename。
3. uiimport('-file')
在命令窗口输入uiimport('-file'),表示在当前文件夹内选择数据文件。
4. uiimport('-pastespecial')
在命令窗口输入uiimport('-pastespecial'),表示打开当前剪贴板中的数据。
5. S=uiimport(…)
表示将数据文件按结构存储在S中。
【例2-5】函数uiimport测试。

运行结果如图2-1所示。

具体操作步骤如下:
Step 01回选择要打开的数据文件funddata.xls,如图2-2所示。

Step 02单击“打开”按钮,MATLAB将会读取数据,如图2-3所示。
