Les fonctions d'accès au Web et à XML
Introduction
La version Excel 2019 offre une meilleure prise en compte des facilités qu’offrent deux techniques qui ne peuvent plus être ignorées par l’utilisateur scientifique du logiciel : il s’agit de l’interaction avec le Web et le format de données XML.
Ouvert sur les bases de données externes depuis les toutes premières versions (ODBC), Excel tentait depuis la version 2003 de tirer parti des ressources du Web. Cependant, l’accès à ces ressources restait complexe, limité et surtout fastidieux à mettre en œuvre. Avec l’apparition de la fonction SERVICEWEB dans Excel 2013, le problème s’est largement simplifié puisque l’utilisateur retrouve ses habitudes de travail normales. Il peut ainsi introduire aisément, dans ses classeurs, un nombre considérable d’informations externes.
Une autre technique importante, le format de données XML, a fait son apparition dans la suite Microsoft Office avec la version 2007. L’éditeur a d’ailleurs décidé d’abandonner ses formats propriétaires .xls, .xlm, etc. au profit d’un stockage des documents en XML. Ici encore, il propose une nouvelle fonction, FILTRE.XML, qui permet un accès aisé à des données, de plus en plus nombreuses, présentées sous ce format.
La fonction SERVICEWEB
La fonction SERVICEWEB permet de tirer parti simplement des immenses ressources fournies en ligne par le Web. Il est ainsi possible de rapatrier dans une cellule Excel 2019 des informations provenant de sources scientifiques ou financières et de les intégrer à une application. C’est une opportunité intéressante concernant particulièrement les données fortement évolutives telles que les positions de corps célestes ou les cours des actions.
La syntaxe de la fonction SERVICEWEB est la suivante : =SERVICEWEB(url du service)
Le résultat de la fonction est une chaîne de caractères qui peut ensuite être traitée par d’autres fonctions Excel. Les principaux formats des résultats fournis par un service web sont des structures JSON et XML. Ces deux structures permettent l’échange d’informations entre systèmes différents.
Voici un exemple de structure JSON :
{
"date": 2086326.5,
"unit": "km",
"results": {
"mars": [
[
-168045229.22750974,
164411532.9003423,
80245103.26520184
],
[
-1449448.751232047,
-1150179.7595137728,
-484397.75425069826
]
...
Les fonctions FILTRE.XML et URLENCODAGE
Rappels sur le format XML
XML est une technique mise au point par les partenaires informatiques pour permettre un échange simple des données entre systèmes différents : Windows, Unix, ou autres. XML possède les caractéristiques suivantes :
-
Les données sont uniquement des textes.
-
Les données sont structurées par des balises. L’utilisation des balises est très contraignante et ne tolère aucune approximation. Les balises peuvent contenir d’autre balises, constituant ainsi une structure hiérarchique du document.
-
Tout élément est inclus entre une balise ouvrante et une balise fermante, sans imbrication possible entre les balises.
-
Contrairement à HTML, les balises ne sont pas prédéfinies. Chaque groupe d’utilisateurs, souhaitant échanger des données, est libre de créer ses propres balises et de définir ainsi un schéma. Les scientifiques, par exemple, ont défini un schéma, MathML, leur permettant un échange simple de données mathématiques, et en particulier un échange d’équations.
Le fichier (rando.gpx) qui sera utilisé pour traiter les exemples d’utilisation de la fonction FILTRE.XML est un extrait provenant de l’enregistrement de données par un GPS. Les fichiers XML .gpx sont structurés suivant un schéma de données créé par Google et devenu un standard de fait. Ci-dessous voici un extrait des informations contenues dans ce fichier.
<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.1"
creator="http://www.runthemap.com/"
xmlns="http://www.topografix.com/GPX/1/1">
<metadata>
<name>2019/04/30-09:42:37 - St herbot</name>
</metadata>
<trk>
<name>Sequence 1</name>
<desc></desc>
<trkseg>
<trkpt lat="48.328376384452"...