讀excel檔案

來源:互聯網
上載者:User

1,用函數:

[num,txt]=xlsread(filename)

num是數值部分,txt是文本部分。

2,用嚮導:

將excel檔案拷貝到Current Directory中開啟,就會出現Import Wizard:

data是數值部分,textdata是文本部分。

--

由於matlab中有str2num函數,將字元轉數值是很方便的,因此也許希望將excel中全部內容都當作文本讀進來,那麼可以修改原excel檔案,其中的數值列都轉成文本,方法如下:(來自http://www.mzwu.com/article.asp?id=1150

)

1.選中想轉為文本的列

2.選擇"資料"菜單下的"分列",開啟文本分列嚮導視窗

3.在步驟一中選擇"分隔字元號",點擊進入下一步

4.在步驟二中不選擇任何分隔號,點擊進入下一步

5.在步驟三中將列資料格式設定為"文本",點擊完成

這樣,再讀到matlab後此列就被當成文本了。

--

當然,由於textdata每個格用一個元胞,所以也完全可以將data和textdata讀進來後通過編程將data填充到textdata對應的元胞裡去,從而得到一個完整的表格。下面函數可以實現這個功能:

function sheet=joint(data,textdata,beginline)

%beginline指明資料從哪一行開始填充,即等於表頭所佔行數+1

%從左向右對空列依次填充,因此須保證原表格中沒有空列才能正確填充

sheet=textdata;

if size(data,2)==0

    return;

end

emptycol=zeros(1,size(sheet,2));%記錄sheet各列是否為空白

%找sheet的所有空列

for j=1:size(sheet,2)

    %看sheet的第j列是否為空白

    empty=true;

    for i=beginline:size(sheet,1)

        if ~isempty(sheet{i,j})

            empty=false;

        end

    end%得到empty

    if empty==true

        emptycol(j)=1;

    end

end%得到emptycol

index=find(emptycol==1);

%用data填充sheet中由index所指向的各列

pdatacol=1;

for j=index

    if pdatacol>size(data,2)

        error('數值不足以填充所有空列!(可能是由於原表中存在空列)');

    end

    %填充sheet的第j列

    for i=beginline:size(sheet,1)   

        sheet{i,j}=data(i-beginline+1,pdatacol);

    end

    pdatacol=pdatacol+1;

end

end

註:

將數值與文本合在一起看似比較完美,但實際上往往並不好,尤其是需要對數值作批量處理的時候:如果放在矩陣裡,可以進行塊操作,但如果放在元胞裡,就必須用迴圈遍曆。由此看來,matlab將數值與文本分開匯入不無道理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.