10/28/2006

7.8 存取excell檔案資料

許多資料多以微軟的速算表excell儲存,故如何自速算表中取得資料相當重要。為此,MATLAB有如下之指令可以自速算表中擷取資料:


[N, T, rawdata] = xlsread('filename', sheet, 'range')


其中filename為檔案名稱,包括路徑及副檔名.xls;sheet為速算表之序號或名稱,若為名稱則必須使用字串型式,如'sheet1'是。range則為所要指定的範圍,如'A1:C3',必須為範圍的型式,大小寫均可。若不指定範圍,即表示輸入整個速算表。若sheet=-1,則有特別功能,亦即可以直接在速算表指定其範圍即可,但此時必須將速算表同時開啟才行。在輸出參數方面,N為數值陣列,T為字串陣列,而rawdata則為細胞陣列,包括所有資料。

下面舉一個例子。設一速算表之內容如下:






















>> [N,A,rawdata]=xlsread('demo7.xls')
N =
12 NaN 60
14 NaN 105
16 NaN 56
18 NaN 48
20 NaN 50
A =
'頁數' '姓名' '年齡' '說明'
'' '馮丁樹' '' '本書的作者'
'' '張三豐' '' '太極拳祖爺'
'' '曹雪芹' '' '紅樓夢作者'
'' '高山青' '' '一首常唱的歌'
'' '文天祥' '' '作了正氣歌'
rawdata =
'頁數' '姓名' '年齡' '說明'
[ 12] '馮丁樹' [ 60] '本書的作者'
[ 14] '張三豐' [ 105] '太極拳祖爺'
[ 16] '曹雪芹' [ 56] '紅樓夢作者'
[ 18] '高山青' [ 48] '一首常唱的歌'
[ 20] '文天祥' [ 50] '作了正氣歌'


其中,N為數值矩陣,A為字串矩陣,而rawdata則為全部之資料,亦即細胞矩陣。


輸出至檔案之格式與參數也類似讀入之型式,其指令格式如下:

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

除上述之定義外,其中M為待輸出之矩陣,輸出檔案名稱可包含路徑。左邊有兩項資訊,若輸出成功,則status=1否則為0,message則會傳出錯誤的信息。其中有兩項,一為錯誤資訊的內容,另一為identifier,或為識別項。通常在寫入excell檔時,若原檔已有內容,則在進行存檔後會有如下之警告信息:

Warning: Added specified worksheet.

若不想這類信息一再出現,可以打入如下指令:

>>warning off MATLAB:xlswrite:AddSheet

如此,警告信息不會再出現,而後面MATLAB:xlswrite:AddSheet即為識別項idengifier。


例如:


>> books = {'書名', '價格(元)'; '模貝設計' 298; '模貝設計' 298; '基本電學' 580; '哈利波特' 660}
books =
'書名' '價格(元)'
'模貝設計' [ 298]
'模貝設計' [ 298]
'基本電學' [ 580]
'哈利波特' [ 660]

>> status=xlswrite('demo8.xls',books,'demo')
status = 1 %表示存檔成功


在excell之檔案內容如下: