matlab 读取excel office 的表格文件也就是xls 文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取的数据通常都被保存为xls 格式,但处理数据时,我们却需要把xls 文件的数据导入到matlab 里进行处理。 如果你只处理一个文件并且只做一次的话,你可以手动来拷贝粘贴,这花费不了你太多时间。如果有很多 xls 文件,或者你的xls 文件的内容可能随时被修改,那么下面的方法可以派上用场。 matlab 自身提供了大量的函数,包括读取office 文件。其中xlsread 和 xlswrite 就是专门用来读取xls 文件里的数据的。这两个函数的使用方法可以直接查看 matlab 自带的帮助。 xlsread 对于纯数据的xls 文件支持很完美,也就是说当 xls 文件里的每个格子都是“数”时,xlsread 会直接返回一个实数矩阵。但是通 常我们拿到xls 文件并不是这样,它的表头多半是描述性文字,它的数据也有可能是文字,有些位置的数据还有可能是缺失的。xlsread对这样的文件读取 无能为力,或者说需要大量的时间去协调数据的位置信息。要是有一个函数,能够按照原有的顺序直接读取所有的单位格数据就好了。当然,这时候返回的矩阵就不 能是一个数值矩阵了,它将会是一个cell 矩阵,里面的每个元素类型可能不一样。 matlab 本身并不提供这个功能,但是另外有一个函数officedoc 完美的实现这个功能。这个函数包可以去 OfficeDoc 官方网站上去下载,解压缩后放到工作路径上即可。使用方法可以查询 help officedoc。officedoc 是收费函数包,但有免费版本,而且其免费版本可以实现上面我们所说的效果(收费版本主要是可以用来修改 office 文件)。 例子: 在matlab 中读取xls 格式的文件内容如应用如下函数: 1.bb=xlsread('c:feature.xls','a0:an40'),其中:c:feature.xls 为文件存放的地址,a0:a40 为将要读取的单元格的范围.bb 为读取的矩阵在MATLAB 中的变量名. 2.使用m 文件脚本如下: Excel = actxserver('Excel.Application'); set(Excel, 'Visible', 1); Workbooks = Excel.Workbooks; Workbook = invoke(Workbooks, 'Open', [cd,'\feature\ABC.xls']); %% 读取 ABC.xls:sheet1 a1(即 R1C1)~an40(即 R240c40) 范围内的 40by40 矩阵 read_excel=ddeinit('excel','ABC.xls:sheet1'); feature1 = ddereq(read_excel, 'R1c1:R40c40'); feature1 %% ...