2010-06-23 1551 views
3

我正在從Matlab中將一個字符串數組寫入Excel。我有一個單元陣列數據{},我試圖寫入Matlab。由於strcmp傳遞了3次,所以它應該寫入三段很長的字符串才能出色。目前它只是將最後一組字符串寫入excel。數據= {{1x25} {1x35} {1x20}}看起來像這樣。此外,我希望能夠將數據寫入三個單元格,而不是像單元格數組元素中的行一樣將其複製到多個單元格中。這是可能做到與Matlab優秀?使用Matlab將字符串寫入excel?

done = {} 

for i = 1:3 
    q = strcmp(x_gene_ID{i},locus_tags{i}); 
    if q ==1 
     done{end+1} = data{i}; 
     disp(done); 

    end 


end 


w = xlswrite('data.xlsx',done','E2:E400'); 

好吧,這有助於我意識到單元格陣列的大於3單元格範圍。我試圖讓Excel中的Nx1單元格陣列適合一個單元格,因爲它需要對應於相鄰單元格中的信息。這完全有可能嗎?

A  B  C  D     E 
w Rv0146 na Rv0039c (i want the cell array1 to go here) 
s Rv0156 na Rv0029c (i want the cell array2 to go here) 
s Rv0156 na Rv0029c (i want the cell array2 to go here) 

這裏是什麼,我期待在Excel做

+0

它出現在'data'中的每個單元格都是一個字符串的單元數組。我不認爲XLSWRITE會允許你將一個完整的單元格數組放入電子表格的* one *單元格中。它會嘗試將數組的每個單元格放入電子表格的自己的單元格中。 – gnovice 2010-06-23 20:21:56

+0

你會建議使用其他語言還是你認爲這是Matlab無法做到的問題? – 2010-06-23 21:09:28

回答

5

修訂答:

如果我理解正確的話,看來你的變量data是單元陣列,其中每個單元包含一個1乘N(或可能是N乘1)的字符串單元陣列。如果您想嘗試將這些單元格中的每個單元格組合到電子表格的一個單元格中,則需要首先將每個單元格格式化爲單個長字符串。

這裏是你如何能與他們之間的換行符一起連接起來將格式字符串的電池單元陣列的例子:,每串

data = {{'hello' 'hi' 'hey'} ...    %# Sample cell array of 1-by-N 
     {'world' 'earth' 'everyone'} ...  %# cell arrays of strings 
     {'blah' 'blah'}}; 
data = cellfun(@(x) {strcat(x,{char(10)})},data); %# Add newline characters 
                %# to the string ends 
data = cellfun(@(x) {deblank([x{:}])},data); %# Concatenate the inner cells and 
               %# remove the trailing newlines 

現在串的每單元陣列僅僅是一個長字符串可以寫入到一個Excel電子表格的單元格如下:

xlswrite('data.xls',data(:),'Sheet1','E2'); %# Write the data to cells E2 to E4 

而這裏的生成的電子表格的樣子:

alt text

如果使用空間' ',而不是一個換行符的,這裏的電子表格的樣子(調整行和列寬後):在上面的代碼中使用

alt text

功能:CELLFUNSTRCAT,CHAR,DEBLANK,XLSWRITE

+0

我已更新我的代碼以解決問題,但在寫入excel時仍然遇到問題。 – 2010-06-23 20:10:50

+2

我也建議使用'ExcelCol'來找到正確的列標題。你可以在這裏從FileExchange下載它:http://www.mathworks.com/matlabcentral/fileexchange/27182-excel-column-conversion 它使得處理Excel變得更容易。 – JudoWill 2010-06-23 20:43:35

+0

我已經做了幾件事更清楚我正在尋找什麼。我會檢查ExcelCol – 2010-06-23 21:06:40