Avec MATLAB, vous pouvez écrire et lire des données à partir d’un fichier Excel. Pour réaliser ce travail, nous allons faire appel à 3 fonctions :

  • xlsfinfo : permet de récupérer les informations sur un fichier Excel.
  • xlswrite : permet d’écrire des données dans un fichier Excel.
  • xlsread : permet de lire des données à partir d’un fichier Excel.

 

Ecriture d’un fichier Excel

xlswrite permet d’écrire des données dans un fichier Excel.

>> A = [12.7 5.02 -98 63.9 0 -.2 56];
>> xlswrite('monfichier.xlsx', A).

Cette commande permet d’écrire la matrice A dans la première feuille du fichier excel monfichier.xlsx. La fonction commence le remplissage à partir de la cellule A1.

 

Vous pouvez préciser la feuille ou la cellule dans laquelle, vous voulez écrire vos données:

xlswrite('monfichier.xlsx', A, ongletcible, cellulecible)

Dans ce cas, les données contenues dans la matrice A seront écrites dans la feuille de calcul ongletcible et à partir de la cellule cellulecible.

 

Vous pouvez également récupérer des informations sur le statut du traitement de la commande:

[statut message] = xlswrite('monfichier.xlsx', A, ongletcible, cellulecible)

Avec cette commande, statut sera égal à 1 si la commande est correctement réalisée. Dans le cas où il y aurait des problèmes sur le traitement, statut sera égal à 0.

Le message d’erreur ou de danger sera stocké dans la chaîne de caractère message.

 

Exemple

function ecritureExcel
% cette fonction permet d'écrire dans un fichier excel
% Ecrture dans le fichier Excel
A = [12.7 5.02 -98 63.9 0 -.2 56];
xlswrite('FichierEcriture.xlsx', A)

% Ecriture des données dans une feuille/cellule spécifique
nomfichier = 'FichierEcriture.xlsx';
A = {'Heure', 'Temperature'; 12, 98; 13, 99; 14,97};
ongletcible = 2;
cellulecible = 'E1';
[statut, message] = xlswrite(nomfichier, A, ongletcible, cellulecible)

% ajout de données dans un onglet qui n'existe pas
[statut2, message2] = xlswrite(nomfichier, A, 'nouveauonglet', cellulecible)

end

 

L’exécution de la fonction précédente, donne le résultat suivant :

>> ecritureExcel

statut =
     1

message = 
       message: ''
    identifier: ''

Warning: Added specified worksheet. 
> In xlswrite>activate_sheet at 285
  In xlswrite>ExecuteWrite at 257
  In xlswrite at 214
  In ecritureExcel at 15 

statut2 =
     1

message2 = 
       message: 'Added specified worksheet.'
    identifier: 'MATLAB:xlswrite:AddSheet'

 

Contenu du fichier FichierEcriture.xlsx :

excel1
Contenu de l’onglet Feuil1

 

excel2
Contenu de l’onglet nouveauonglet

 

Lecture d’un fichier Excel

xlsread permet de lire des données à partir d’un fichier Excel.

num = xlsread('monfichier.xlsx')

Cette commande permet lire le premier onglet du fichier excel et retourne les données numérique sous forme de matrice.

Vous pouvez affiner la commande, en précisant l’onglet et la cellule que vous voulez lire :

contenunum = xlsread('monfichier.xlsx', onglet, cellule)

Ces deux commandes ne retournent que des valeurs numériques.

 

Pour avoir le contenu texte, vous pourrez utiliser la commande suivante :

[contenunum, contenutext, contenubrut] = xlsread(...)

Elle renvoie le contenu texte dans le tableau de cellule contenutext et le contenu brut (texte et numérique) est renvoyé dans le tableau de cellules contenubrut.

 

Vous pouvez aller plus loin, en faisant un pré traitement sur les données importées.

[contenunum, contenutext, contenubrut, contenutraite] = xlsread('monfichier.xlsx', onglet, cellule, '', @Mafonction)

Dans ce cas, Mafonction est un pointeur vers une fonction qui sera appliquée sur les données importées. Ensuite le résultat de ce traitement est stocké dans le tableau de cellules contenutraite.

 

Exemple

function LectureExcel

% création du fichier excel
valeurs = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
entete = {'Premier', 'Deuxieme', 'Troisieme'};
xlswrite('FichierLecture.xlsx', [entete; valeurs]);

% Lecture des valeurs numériques
contenunum = xlsread('FichierLecture.xlsx')

% Lecture d'une cellule spécificque
onglet = 1;
cellule = 'B2:C3';
contenucellule = xlsread('FichierLecture.xlsx', onglet,cellule)

% Lecture d'une colonne
contenuceolonne = xlsread('FichierLecture.xlsx','B:B')

% Lecture des valeurs numériques, données textuelles et de la combinaison des 2 types de données
[contenunum2, contenutext2, contenubrut] = xlsread('FichierLecture.xlsx')


% génération d'un randomn pour l'ajouter dans le fichier excel
A = rand(5);
xlswrite('FichierLecture.xlsx', A, 'MesDonnes');

% appliquer la fonction Mafonction aux données importées
[contenunum3, contenutext3, contenubrut3, contenutraite] = xlsread('FichierLecture.xlsx', 'MesDonnes', '', '', @Mafonction)

end

  % une fonction pour le traitement des données importées
  % elle retourne l'indice de la cellule si sa valeur est > 0.8 ou < 0.2
  function [Data, indices] = Mafonction(Data)

  minval = 0.2; 
  maxval = 0.8;
  indices = [];
    
  for k = 1:Data.Count
    v = Data.Value{k};
    if v > maxval
      Data.Value{k} = maxval;
      indices = [indices k];
    elseif v < minval
      Data.Value{k} = minval;
      indices = [indices k];
    end  
  end

end

 

L’exécution de la fonction précédente donne le résultant suivant :

>> lectureExcel

contenunum =
     1     2     3
     4     5   NaN
     7     8     9

contenucellule =
     2     3
     5   NaN

contenuceolonne =
     2
     5
     8

contenunum2 =
     1     2     3
     4     5   NaN
     7     8     9

contenutext2 = 
    'Premier'    'Deuxieme'    'Troisieme'
    ''           ''            ''         
    ''           ''            'x'        

contenubrut = 
    'Premier'    'Deuxieme'    'Troisieme'
    [      1]    [       2]    [        3]
    [      4]    [       5]    'x'        
    [      7]    [       8]    [        9]

Warning: Added specified worksheet. 
> In xlswrite>activate_sheet at 284
 In xlswrite>ExecuteWrite at 256
 In xlswrite at 213
 In LectureExcel at 25 
contenunum3 =
    0.2760    0.4984    0.7513    0.8000    0.8000
    0.6797    0.8000    0.2551    0.5472    0.2543
    0.6551    0.3404    0.5060    0.2000    0.8000
    0.2000    0.5853    0.6991    0.2000    0.2435
    0.2000    0.2238    0.8000    0.2575    0.8000

contenutext3 = 
     {}

contenubrut3 = 
    [0.2760]    [0.4984]    [0.7513]    [0.8000]    [0.8000]
    [0.6797]    [0.8000]    [0.2551]    [0.5472]    [0.2543]
    [0.6551]    [0.3404]    [0.5060]    [0.2000]    [0.8000]
    [0.2000]    [0.5853]    [0.6991]    [0.2000]    [0.2435]
    [0.2000]    [0.2238]    [0.8000]    [0.2575]    [0.8000]

contenutraite =
     4     5     7    15    16    18    19    21    23    25

 

Récupérer les informations sur le fichier

xlsfinfo permet de récupérer les informations sur un fichier Excel.

statut = xlsfinfo('monfichier.xlsx')

Cette commande permet de savoir si le fichier monfichier.xlsx est lisible par xlsread. La chaîne de caractères statut est non vide si le fichier fourni est un fichier Excel et peut donc être lisible par la fonction xlsread.

 

Vous pouvez récupérer la liste des feuilles de calcul du fichier monfichier.xlsx avec la commande suivante :

[statut, onglets] = xlsfinfo('monfichier.xlsx')

Cette commande renvoie dans la variable onglets, un tableau de cellule qui contient la liste de tous les  feuilles de calcul du fichier Excel. Chaque cellule d’onglets contient le nom d’une feuille de calcul.

 

[statut,onglets,xlFormat] = xlsfinfo('monfichier.xlsx')

Dans ce cas, la chaîne de caractères xlFormat contient la description du format de fichier retourné par Excel.

Sur un système Windows avec Excel, il retourne :

‘xlOpenXMLWorkbook’ => sur un fichier au format XLSX

‘xlWorkbookNormal’ ou ‘xlExcel8’ =>sur un fichier au formatXLS

‘xlCSV’ =>sur un fichier au formatCSV

‘xlHtml’ or ‘xlWebArchive’ =>sur un fichier au formatHTML

Sur un autre système, il renvoie une chaîne de caractère vide.

 

Exemple :

% Création d'un fichier excel FichierInfo.xlsx.

valeurs = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9};
entete = {'Premier', 'Deuxieme', 'Troisieme'};
xlswrite('FichierInfo.xlsx', [entete; valeurs]);

% Appelle de la fonction xlsfinfo pour avoir les infos sur le fichier
[statut, onglets, xlFormat] = xlsfinfo('FichierInfo.xlsx')
>> infos_sur_lefichier

statut =
Microsoft Excel Spreadsheet


onglets =
'Feuil1' 'Feuil2' 'Feuil3'


xlFormat =
xlOpenXMLWorkbook

 

Mise en pratique

Énonce

Nous vous proposons de faire un programme qui permet de créer le fichier Notes.xlsx de la capture d’écran ci-dessous. Le programme doit également permettre de lire le contenu du fichier pour calculer la moyenne de la classe.

 

Fichier Notes.XLSX

 

Correction

Pour avoir la correction, il faut d’abord nous envoyez votre solution à l’adresse  et nous vous ferons parvenir la correction.