2010-06-23 3 views
3

Я пишу массив ячеек строки в Excel из Matlab. У меня есть данные массива ячеек {}, которые я пытаюсь записать в Matlab. Он должен набирать три больших длины строк, чтобы преуспеть, поскольку strcmp проходит 3 раза. В настоящее время он записывает только последний набор строк в excel. data = {{1x25} {1x35} {1x20}} выглядит следующим образом. Кроме того, я хотел бы иметь возможность записывать данные в три ячейки вместо того, чтобы копировать их в такое количество ячеек, что в элементе массива ячеек есть строки. Возможно ли это с Matlab превзойти?Запись строк в excel с использованием Matlab?

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-х ячеек. Я пытаюсь получить массив ячеек Nx1 для установки в одну ячейку в Excel, потому что он должен соответствовать информации в соседней ячейке. Можно ли это сделать?

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) 

Вот что я ищу, чтобы сделать в первенствует

+0

Кажется, что каждая ячейка в 'data' является массивом ячеек строк. Я не думаю, что XLSWRITE позволит вам поместить весь массив ячеек строк в * одну * ячейку таблицы. Он попытается поместить каждую ячейку массива в свою ячейку таблицы. – gnovice

+0

Вы предлагаете использовать другой язык или, как вы думаете, это проблема, которую не может сделать Matlab? –

ответ

5

ОБНОВЛЕНО ОТВЕТ:

Если я правильно понимаю, это кажется, что ваша переменная data массив ячеек, каждая ячейка которой содержит 1-by-N (или, возможно, N-by-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

Функции, используемые в приведенном выше коде: CELLFUN , STRCAT, CHAR, DEBLANK, XLSWRITE.

+0

Я обновил свой код, чтобы исправить проблему, но у меня все еще возникают проблемы, когда я пишу excel. –

+2

Я также предложил бы использовать 'ExcelCol' для поиска правильных заголовков столбцов. Вы можете скачать его из FileExchange здесь: http://www.mathworks.com/matlabcentral/fileexchange/27182-excel-column-conversion Это упрощает работу с Excel. – JudoWill

+0

Я сделал несколько вещей более ясным о том, что я ищу.Я проверю ExcelCol –

Смежные вопросы