I am writing a cell array of string into Excel from Matlab. I have a cell array data{} that I am trying to write into Matlab. It should writting three large lengths of strings to excel since the strcmp passes 3 times. Currently it is only writing the last set of strings into excel. data = { {1x25} {1x35} {1x20开发者_StackOverflow中文版} } looks like this. Also I would like to be able to write the data into three cells instead of getting copyied into as many cells as there are lines in the element of the cell array. Is this possible to do with Matlab to 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');
Ok that helps I am aware the cell array's are larger than 3 cell range. I am trying to get the Nx1 cell array to fit into one cell in Excel because It needs to correspond to information in an adjacent cell. Is this at all possible to do?
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)
Here is what I am looking to do in excel
UPDATED ANSWER:
If I understand correctly, it appears that your variable data
is a cell array where each cell contains a 1-by-N (or perhaps N-by-1) cell array of strings. If you want to try and fit each of these cell arrays of strings into one cell of a spreadsheet, you are going to need to format each into a single long string first.
Here's an example of how you could format the cell arrays of strings by concatenating them together with a newline between them:
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
Now that each cell array of strings is just a single long string, each string can be written to a cell of an Excel spreadsheet as follows:
xlswrite('data.xls',data(:),'Sheet1','E2'); %# Write the data to cells E2 to E4
And here's what the resulting spreadsheet looks like:
If you use a space ' '
instead of a newline character, here's what the spreadsheet looks like (after adjusting the row and column widths):
Functions used in the above code: CELLFUN, STRCAT, CHAR, DEBLANK, XLSWRITE.
精彩评论