2015-08-05 2 views
0

Dans la documentation doc xlsread, il est décrit que l'on peut utiliser [num,txt,raw] = xlsread('example.xls') pour extraire des données de feuilles Excel vers matlab.Matlab - obtenir la formule d'Excel avec xlsread?

J'ai une feuille contenant des formules à copier dans d'autres feuilles, cependant xlread prendra la valeur interprétée valeur au lieu de la formule elle-même. Par exemple une formule est =AVERAGE(B8:V8) qui est ce que je voudrais tirer de la feuille par programmation, mais à la place excel renvoie la valeur 0.810 qui est ce que la formule reviendrait.

Est-il possible d'extraire la formule de quelque façon que ce soit avec matlab?

+0

http://www.mathworks.com/matlabcentral/newsreader/view_thread/318498 – Ikaros

+0

@HamtaroWarrior J'ai vu ce fil - ce n'est pas utile ... personne n'a trouvé de solution. –

Répondre

4

Il est impossible avec xlsread seulement.

Un exemple d'utiliser un objet COM Excel:

Utilisons simple feuille Excel par exemple, contenant du texte, des valeurs et formule:

excel snippet

ensuite le code suivant:

xlfile = 'test1.xlsx' ; 
xlRange = 'B3:C6' ; 

exl = actxserver('excel.application');     %// Create a COM server 
exlFile = exl.Workbooks.Open([pwd '\' xlfile]); %'// Open the file 
exlSheet1 = exlFile.Sheets.Item('Sheet1');    %// Choose the worksheet 
strFormula = exlSheet1.Range(xlRange).Formula   %// Read the full range 

Rend un joli tableau de cellules:

strFormula = 
    'This is text'  'hello'   
    'this is value'  '12.5'   
    'this is value'  '29'    
    'this is formula' '=AVERAGE(C4:C5)' 

Si vous connaissez directement l'adresse d'une cellule spécifique, vous renvoie une chaîne simple:

cellFormula = exlSheet1.Range('C6').Formula    %// Read a single cell 

cellFormula = 
=AVERAGE(C4:C5) 
+0

Merci! Je contrôle déjà Excel ailleurs comme ça, mais c'est beaucoup plus lent que d'utiliser xlsread donc j'aurais préféré ne pas en avoir besoin ici. –

1

Il n'est pas possible d'utiliser xlsread, vous devez utiliser l'une des API disponibles pour lire des fichiers Excel ou accéder à Excel. À ma connaissance les choix sont les suivants:

  • Apache POI qui peut être facilement utilisé via le Java Bridge. Un exemple peut être trouvé here
  • Similaire au pont Java, les versions récentes de Matlab peuvent accéder aux bibliothèques Python comme openpyxl. Cela nécessite at lest Matlab 2014b
  • Vous pouvez accéder à l'application Excel via COM or .NET