matlab:xlsread

最好用的方法

filename = 'myExample.xlsx';
sheet = 1;
xlRange = 'B2:C3';

[num,txt,raw] = xlsread(filename,sheet,xlRange)

语法

num = xlsread(filename)
num = xlsread(filename,sheet)
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
[num,txt,raw] = xlsread(___)
___ = xlsread(filename,-1)
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)

说明

  1. num = xlsread(filename) 读取名为 filename 的 电子表格工作表中的第一个工作表,并在一个矩阵中返回数值数据。
  2. num = xlsread(filename,sheet) 读取指定的工作表。
  3. num = xlsread(filename,xlRange) 从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 ‘A1:C3’。
  4. num = xlsread(filename,sheet,xlRange) 读取指定的工作表和范围。
  5. [num,txt,raw] = xlsread(___) 还使用先前语法中的任何输入参数,在元胞数组 txt 中返回文本字段,在元胞数组 raw 中返回数值数据和文本数据。
  6. ___ = xlsread(filename,-1) 打开一个 Excel 窗口以便按交互方式来选择数据。选择工作表,将鼠标拖放到所需范围上,然后点击确定。只有安装了 Microsoft Excel 软件的 Windows 计算机才支持此语法。
  7. [num,txt,raw,custom] = xlsread(filename,sheet,xlRange,’’,processFcn)(其中 processFcn 是函数句柄)读取电子表格,对数据调用 processFcn,并在数组 num 中以数值数据的形式返回最终结果。xlsread 函数在元胞数组 txt 中返回文本字段、在元胞数组 raw 中返回数值和文本数据,并在数组 custom 中返回 processFcn 的第二个输出。xlsread 函数不会更改电子表格中存储的数据。只有安装了 Excel 软件的 Windows 计算机才支持此语法。

示例

将工作表读取到数值矩阵

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);

filename = 'myExample.xlsx';
A = xlsread(filename)

读取特定范围的数据

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);

filename = 'myExample.xlsx';
sheet = 1;
xlRange = 'B2:C3';

subsetA = xlsread(filename,sheet,xlRange)

读取特定列的数据

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);

filename = 'myExample.xlsx';

columnB = xlsread(filename,'B:B')

读取数值、文本和原始数据

values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);

[num,txt,raw] = xlsread('myExample.xlsx')

对工作表执行函数

function [Data] = setMinMax(Data)

minval = 0.2; 
maxval = 0.8;
 
for k = 1:Data.Count
  v = Data.Value{k};
  if v > maxval
    Data.Value{k} = maxval;
  elseif v < minval
    Data.Value{k} = minval;
  end
end
A = rand(5);
xlswrite('myExample.xlsx',A,'MyData')

trim = xlsread('myExample.xlsx','MyData','','',@setMinMax)

请求自定义输出

function [Data,indices] = setMinMax(Data)

minval = 0.2; 
maxval = 0.8;
indices = [];
 
for k = 1:Data.Count
  v = Data.Value{k};
  if v > maxval
    Data.Value{k} = maxval;
    indices = [indices k];
  elseif v < minval
    Data.Value{k} = minval;
    indices = [indices k];
  end  
end
%自定义索引输出
[trim,txt,raw,idx] = xlsread('myExample.xlsx',...
    'MyData','','',@setMinMax)

输入参数

filename-文件名

字符向量或字符串
示例:‘myFile.xlsx’
char | string

sheet-工作表

  • 包含工作表名称的字符向量或字符串。名称不能包含冒号。要确定电子表格中工作表的名称,可以使用xlsfinfo。
  • 指示工作表索引的正整数。
    数据类型:char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

xlRange-矩形范围

使用两个对角来定义要读取的区域;
输入不区分大小写;
数据类型:char | string

processFcn-自定义函数的句柄

具体用法见上面示例,自定义函数,实现对表格的操作。

输出参数

num-数值数据

返回为double类型的数值矩阵。

txt-文本数据

返回为元胞数组。

raw-数值数据和文本数据

返回工作表中的数值数据和文本数据,数据类型为元胞数组。可以看作上面两个的和。

custom-对应processFcn函数的第二个输出

具体的输出形式,数据类型,什么的都要根据processFcn函数来确定。

你可能感兴趣的:(MATLAB,matlab)