目錄
語法
說明
示例
將工作表讀取到數值矩陣
讀取元胞的范圍
讀取列
請求數值、文本和原始數據
對工作表執行函數
請求自定義輸出
局限性
xlsread函數的功能是讀取Microsoft?Excel?電子表格文件
語法
num = xlsread(filename)
num = xlsread(filename,sheet)
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
num = xlsread(filename,sheet,xlRange,'basic')
[num,txt,raw] = xlsread(___)
___ = xlsread(filename,-1)
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)
說明
????????num = xlsread(filename) 讀取名為 filename 的 Microsoft? Excel? 電子表格工作表中的第一個工作表,并在一個矩陣中返回數值數據。
????????num = xlsread(filename,sheet) 讀取指定的工作表。
????????num = xlsread(filename,xlRange) 從工作簿的第一個工作表的指定范圍內讀取數據。使用 Excel 范圍語法,例如 'A1:C3'。
????????num = xlsread(filename,sheet,xlRange) 讀取指定的工作表和范圍。
????????num = xlsread(filename,sheet,xlRange,'basic') 在 basic 導入模式下讀取電子表格中的數據。如果計算機未安裝 Windows? 版 Excel 或者您正在使用 MATLAB? Online?,xlsread 會自動在 basic 導入模式下運行,該模式支持 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。
????????如果不指定所有參數,請使用空字符向量 '' 作為占位符,例如,num = xlsread(filename,'','','basic')。
????????[num,txt,raw] = xlsread(___) 還使用先前語法中的任何輸入參數,在元胞數組 txt 中返回文本字段,在元胞數組 raw 中返回數值數據和文本數據。
????????___ = xlsread(filename,-1) 打開一個 Excel 窗口以便按交互方式來選擇數據。選擇工作表,將鼠標拖放到所需范圍上,然后點擊確定。只有安裝了 Microsoft Excel 軟件的 Windows 計算機才支持此語法。
????????[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)(其中 processFcn 是函數句柄)讀取電子表格,對數據調用 processFcn,并在數組 num 中以數值數據的形式返回最終結果。xlsread 函數在元胞數組 txt 中返回文本字段、在元胞數組 raw 中返回數值和文本數據,并在數組 custom 中返回 processFcn 的第二個輸出。xlsread 函數不會更改電子表格中存儲的數據。只有安裝了 Excel 軟件的 Windows 計算機才支持此語法。
示例
將工作表讀取到數值矩陣
創建一個名為?myExample.xlsx
?的 Excel 文件。
values = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
headers = {'First','Second','Third'};
xlswrite('myExample.xlsx',[headers; values]);myExample.xlsx 的 Sheet1 包含:First Second Third1 2 34 5 x 7 8 9
讀取第一個工作表中的數值數據。
filename = 'myExample.xlsx';
A = xlsread(filename)
A =1 2 34 5 NaN7 8 9
讀取元胞的范圍
從上一示例的 Excel 文件中讀取特定范圍的數據。
filename = 'myExample.xlsx';
sheet = 1;
xlRange = 'B2:C3';subsetA = xlsread(filename,sheet,xlRange)subsetA =2 35 NaN
讀取列
從第一個示例的 Excel 文件中讀取第二列。
filename = 'myExample.xlsx';columnB = xlsread(filename,'B:B')columnB =258
要獲得更佳的性能,可在范圍中包括行號,例如?'B1:B3'
。
請求數值、文本和原始數據
從第一個示例中的 Excel 文件中請求數值數據、文本數據和合并數據。
[num,txt,raw] = xlsread('myExample.xlsx')num =1 2 34 5 NaN7 8 9txt = 'First' 'Second' 'Third''' '' '' '' '' 'x' raw = 'First' 'Second' 'Third'[ 1] [ 2] [ 3][ 4] [ 5] 'x' [ 7] [ 8] [ 9]
對工作表執行函數
????????在編輯器中,創建一個函數以處理工作表中的數據。在這種情況下,將范圍?[0.2,0.8]
?之外的值設置為?0.2
?或?0.8
。
function [Data] = setMinMax(Data)minval = 0.2;
maxval = 0.8;for k = 1:Data.Countv = Data.Value{k};if v > maxvalData.Value{k} = maxval;elseif v < minvalData.Value{k} = minval;end
end
????????在命令行窗口中,將隨機數據添加到?myExample.xlsx
。
A = rand(5);
xlswrite('myExample.xlsx',A,'MyData')
????????名為?MyData
?的工作表包含范圍在 0 至 1 之間的值。
????????讀取工作表中的數據,并重置范圍?[0.2,0.8]
?之外的任何值。指定工作表名稱,但使用?''
?作為?xlRange
?和?'basic'
?輸入的占位符。
trim = xlsread('myExample.xlsx','MyData','','',@setMinMax);
請求自定義輸出
????????對工作表執行函數并顯示自定義索引輸出。
????????在編輯器中,修改上一示例中的函數?setMinMax
?以返回更改后的元素(自定義輸出)的索引。
function [Data,indices] = setMinMax(Data)minval = 0.2;
maxval = 0.8;
indices = [];for k = 1:Data.Countv = Data.Value{k};if v > maxvalData.Value{k} = maxval;indices = [indices k];elseif v < minvalData.Value{k} = minval;indices = [indices k];end
end
????????讀取工作表?MyData
?中的數據,并請求自定義索引輸出idx。
[trim,txt,raw,idx] = xlsread('myExample.xlsx',...'MyData','','',@setMinMax);
局限性
-
xlsread 僅讀取 7 位 ASCII 字符。
-
xlsread 不支持非相鄰范圍。
-
如果計算機未安裝 Windows 版 Excel 或者您正在使用 MATLAB Online,xlsread 會自動在 basic 導入模式下運行。
-
?在 Linux??和?Mac?平臺上,xlsread?不能打開使用?writetable?函數編寫的電子表格文件。
?