XML / Excel

Présentation

  • Développeur web freelance depuis 5 ans

  • http://www.boxydev.com

  • Expérience en agence web, E-Commerce (annonceur)

  • Formation Informatique et Autodidacte

  • Formateur et fan des OSS, contributeur à mes heures perdues

  • Solutions phares : Wordpress, Symfony, Magento, Prestashop, Angular

  • Langages : PHP, MySQL, HTML, CSS, JS

  • Outils : Git, Docker, Vagrant, Trello
  • Stack: ArchLinux, Gentoo, Mac OS (Unix addict)

Sommaire

  • Rappel formats Excel
  • Rappel compatibilité Excel
  • Pratique
  • Présentation technologie XML
  • Pourquoi utiliser le XML ?
  • Comment écrire du XML ?
  • Les balises et attributs
  • Pratique
  • Définitions et Schéma XML
  • Les éléments simples
  • Les types simples
  • Les éléments complexes
  • Export Excel vers XML
  • Import XML vers Excel
  • Export Excel vers PDF

Les formats Excel

- Taille du fichier

- Zone de travail (Plus de cellules)

- Possibilité d'afficher le classeur sur une page web

Format Extension Description
Classeur Excel 97 - 2003 .xls Avant Excel 2007
Classeur Excel .xlsx Compacté, respect format XML, pas de macros
Classeur Excel prenant en charge les macros .xlsm Classeur Excel avec Macros
Classeur Excel binaire .xlsb Format binaire
Modèle .xltx
Modèle avec macros .xltm
Complément Excel .xlam Pour exécuter du code supplémentaire

Rappel compatibilité Excel

Les formats ont changés à partir d'Excel 2007.

Un classeur .xls sera compatible dans toutes les version d'Excel.

Un classeur .xlsx ne sera compatible qu'avec Excel 2007, 2010, 2013, 2016.

 

Le pack de compatibilité Microsoft Office permet d'ouvrir les nouveaux formats (xlsx, xlsm) dans des versions antérieures à Excel 2007.

Pratique

  • Ouvrir Excel
  • Créer un nouveau classeur
  • Enregistrer ce nouveau classeur au format .xls
  • Analyser la taille du fichier
  • Ré-enregistrer le fichier au format .xlsx
  • Ré-analyser la taille du fichier

Présentation XML

Le XML ou eXtensible Markup Language est un langage informatique de balisage générique.

S'écrit avec des balises.

Une balise permet de structurer, d'organiser et de hiérarchiser.

Générique car on peut créer nos propres balises (HTML...)

Pourquoi utiliser le XML ?

SGML (Standard Generalized Markup Language) pour standardiser cet échange.

XML pour simplifier le SGML en 1998.

 

Pour échanger facilement des données.

Standard et recommandation W3C.

Compréhensible par l'homme et la machine.

Règles et balises personnalisables.

Comment écrire du XML ?


<!-- Le PROLOGUE donne des informations sur le fichier (version XML, encodage) -->
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<!-- Dans le CORPS, il y a forcément une balise racine
qui contient toutes nos balises -->
<contacts>
  <contact>Jean</contact>
  <contact>Eric</contact>
</contacts>

Un fichier XML nécessite un prologue et un corps.

Le prologue contient des informations sur le document.

Le corps contient nos balises organisées, hiérarchisées, décrivant nos données.

Les balises et attributs

Il existe les balises par paires et les balises uniques.

On peut placer des attributs avec des valeurs sur les balises.

<balise attribut="valeur">Ceci est une balise par paire</balise>
<balise-unique attribut="valeur" attribut2="valeur" />
<balise>
  <balise-enfant></balise-enfant>
  On peut aussi mettre une valeur ici
</balise>

Pratique

- Ouvrir un éditeur de texte

- Créer un fichier XML contenant une liste de contacts

- Pour chaque contact, stocker les informations suivantes :

  • Son sexe (homme ou femme)
  • Son nom
  • Son prénom
  • Son adresse
  • Un numéro de téléphone
  • Une adresse e-mail

Définitions et schéma XML

Ensemble de règles imposées à un document XML.

Décrit la façon dont le document doit être construit.

Imposer la présence d'une balise, d'un attribut.

Imposer l'ordre des balises ou le type d'une donnée.

Associer une définition à un document permet d'imposer une écriture uniforme pour tous les contributeurs du document.

Un document conforme à une définition sera un document valide.

Définitions et schéma XML

Alternative bien meilleure aux DTD...

Un schéma XML contiendra les règles qu'un document XML doit respecter.

Il porte l'extension .xsd.

<!-- Prologue -->
<?xml version="1.0" encoding="UTF-8" ?>

<!-- Corps et Racine -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

</xsd:schema>

Et pour lier notre document à ce schéma

<?xml version="1.0" encoding="UTF-8"?>

<racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="schema.xsd">

</racine>

Les éléments simples

Un élément simple est un élément qui ne contient qu'une valeur de type simple. Il ne contient pas d'autres éléments.


<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>Dupont</nom>

<!-- Contient un attribut => n'est pas un élément simple -->
<!-- Cependant l'attribut "sexe" est un élément simple -->
<contact sexe="masculin">Jean Dupont</contact>

<!-- La balise contact contient d'autres éléments (les balises nom et prénom)
     => n'est pas un élément simple -->
<contact>
  <!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
  <nom>Dupont</nom>
  
  <!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
  <prenom>Jean</prenom>
</contact>

Les éléments simples

<!-- Extrait de notre XML -->
<nom>Dupont</nom>
<prenom>Jean</prenom>
<age>26</age>

<!-- Extrait du Schéma XML -->
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" ></xsd:element>
<xsd:element name="age" type="xsd:int" ></xsd:element>

Exemple de schéma XML correspondant à un extrait de document XML.

Les types simples

Type Description Exemple
string Représente une chaine de caractères <xsd:element name="string" type="xsd:string" />
<string>Une chaine</string>
date Représente une date <xsd:element name="madate" type="xsd:date" />
<madate>1924-01-13</madate>
int Représente un nombre entier <xsd:element name="nombre" type="xsd:int" />
<nombre>12</nombre>
float Représente un nombre à virgule <xsd:element name="prix" type="xsd:float" />
<prix>12.45</prix>
boolean Représente un état vrai ou faux <xsd:attribute name="actif" type="xsd:boolean" />
<contact actif="true">Matthieu</contact>

Les éléments complexes

Un élément complexe est un élément qui contient d'autres éléments ou des attributs.


<!-- la balise contact contient d'autres balises => élément complexe -->
<contact>
    <!-- la balise nom est un élément simple -->
    <nom>Dupont</nom>
    <!-- la balise prenom est un élément simple -->
    <prenom>Jean</prenom>
</contact>

<!-- la balise personne possède un attribut => élément complexe -->
<contact sexe="masculin">Jean Dupont</contact>

Les éléments complexes



<!-- Extrait de notre XML avec Contenu Simple -->
<prix devise="euros">35</prix>

<!-- Extrait du Schéma XML avec Contenu Simple -->
<xsd:element name="prix">
    <xsd:complexType>
        <xsd:simpleContent>
            <xsd:extension base="xsd:float">
                <xsd:attribute name="devise" type="xsd:string"></xsd:attribute>
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
</xsd:element>

Il existe 2 types d'éléments complexes : Simples, Standards.

Les éléments complexes


<!-- Extrait de notre XML avec Contenu Standard -->
<contact sexe="masculin">
    <nom>Dupont</nom>
    <prenom>Robert</prenom>
</contact>

<!-- Extrait du Schéma XML avec Contenu Standard -->
<xsd:element name="contact">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="nom" type="xsd:string"></xsd:element>
            <xsd:element name="prenom" type="xsd:string"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="sexe" type="xsd:string" ></xsd:attribute>
    </xsd:complexType>
</xsd:element>

Et pour le contenu Standard...

On peut remplacer "sequence" par "all" (peu importe l'ordre des balises) ou "choice" (l'une ou l'autre des balises)

Les éléments complexes


<!-- Extrait de notre XML -->
<contacts>
    <contact>
        <nom>Dupont</nom>
        <prenom>Jean</prenom>
    </contact>
</contacts>

<!-- Extrait du Schéma XML -->
<xsd:element name="contacts">
    <xsd:complexType>
	<xsd:sequence>
	    <xsd:element name="contact" maxOccurs="unbounded">
		<xsd:complexType>
		    <xsd:sequence>
			<xsd:element name="nom" type="xsd:string"></xsd:element>
			<xsd:element name="prenom" type="xsd:string"></xsd:element>
		    </xsd:sequence>
		</xsd:complexType>
	    </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

Et si j'ai un type complexe encapsulant un autre type complexe ?

Pratique

Reprendre le document XML avec la liste des contacts et créer le schéma XML correspondant.

Export Excel vers XML

  • On crée un nouveau classeur
  • Activer le mode développeur dans Excel -> Fichier -> Options -> Personnaliser le Ruban
  • Choisir Sources dans l'onglet Développeur
  • Cliquer sur "Mappages XML..."
  • Ajouter le schéma de validation xsd
  • Faire glisser le schéma sur une cellule
  • On remplit le tableau
  • Clique droit sur le tableau
  • XML -> Exporter

Import XML vers Excel

  • Clique droit dans le tableau du schéma
  • XML -> Importer

Export Excel vers PDF

  • Enregistrer sous...
  • Choisir le format PDF ou XPS

XML Excel

By Matthieu Mota

XML Excel

  • 263