2010-06-23 4 views
3

J'écris un tableau de chaînes de caractères dans Excel depuis Matlab. J'ai une data array {} que j'essaie d'écrire dans Matlab. Il devrait écrire trois grandes longueurs de cordes pour exceller puisque le strcmp passe 3 fois. Actuellement, il écrit uniquement la dernière série de chaînes en Excel. data = {{1x25} {1x35} {1x20}} ressemble à ceci. Je voudrais aussi pouvoir écrire les données dans trois cellules au lieu d'être copiées en autant de cellules que de lignes dans l'élément du tableau de cellules. Est-ce possible de faire avec Matlab pour exceller?Écrire des chaînes dans Excel en utilisant 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'); 

Ok, ça aide que je sache que les cellules sont plus grandes que 3 cellules. J'essaye d'obtenir le tableau de cellules de Nx1 pour tenir dans une cellule dans Excel parce qu'il doit correspondre aux informations dans une cellule adjacente. Est-ce possible du tout?

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) 

Voici ce que je cherche à faire dans Excel

+0

Il apparaît que chaque cellule dans 'data' est un tableau de chaînes de chaînes. Je ne pense pas que XLSWRITE vous permettra de mettre un tableau entier de chaînes de caractères dans * une * cellule d'un tableur. Il va essayer de mettre chaque cellule du tableau dans sa propre cellule de la feuille de calcul. – gnovice

+0

Suggérez-vous l'utilisation d'une autre langue ou pensez-vous que c'est un problème que Matlab ne peut pas faire? –

Répondre

5

RÉPONSE À JOUR:

Si je comprends bien, il semble que votre variable data est un réseau de cellules où chaque cellule contient un Tableau de chaînes 1-by-N (ou peut-être N-by-1) de chaînes. Si vous voulez essayer et adapter chacun de ces tableaux de cellules dans une cellule d'une feuille de calcul, vous devrez d'abord mettre en forme une chaîne longue unique.

Voici un exemple de la façon dont vous pouvez formater les réseaux de cellules de chaînes en les enchaînant avec un saut de ligne entre eux:

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 

Maintenant que chaque réseau de cellules de chaînes est une seule longue chaîne, chaque chaîne peut être écrit à une cellule d'une feuille de calcul Excel comme suit:

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

Et voici ce que la feuille de calcul résultant ressemble:

alt text

Si vous utilisez un espace ' ' au lieu d'un saut de ligne, voici ce que la feuille de calcul ressemble (après ajustement des lignes et la largeur de colonne):

alt text

Fonctions utilisées dans le code ci-dessus: CELLFUNSTRCAT, CHAR, DEBLANK, XLSWRITE.

+0

J'ai mis à jour mon code pour corriger le problème mais j'ai encore des problèmes quand j'écris pour exceller. –

+2

Je suggère également d'utiliser 'ExcelCol' pour trouver les en-têtes de colonne corrects. Vous pouvez le télécharger à partir de FileExchange ici: http://www.mathworks.com/matlabcentral/fileexchange/27182-excel-column-conversion Cela rend le traitement d'Excel beaucoup plus facile. – JudoWill

+0

J'ai fait quelques choses plus claires sur ce que je cherche.Je vais vérifier ExcelCol –

Questions connexes