Libre office calc requéter une base MySQL

::TOC::

On va voir dans ce billet comment charger dans le tableur de libre office des données provenant d'une base MySQL. Le PC client est une kubuntu. Le serveur de bdd est une débian (mais ça ça n'a pas d'importance).

Prérequis:

  • Un serveur MySQL installé
  • Libre office installé sur le poste client

Permettre l'accès distant sur le serveur MySQL.

Editez le fichier /etc/mysql/my.cnf

Afin de permettre les connexions depuis d'autres ordinateurs modifiez la ligne bind-adress par celle-ci

bind-address            = 0.0.0.0
#Redémarrez mysql
/etc/init.d/mysql restart
#puis connectez vous à mysql
mysql -u root -p

Ajoutez un utilisateur ayant les droits depuis un poste distant (remplacer localhost par % dans la commande GRANT)

#pour un accès en lecture seulement:
GRANT SELECT ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse';
#Si vous souhaitez un acces total à la base:
GRANT ALL ON votrebase.* TO 'user'@'%' IDENTIFIED BY 'votreMotDePasse';

Si nécessaire, ouvrez le pare-feu pour permettre les connexions mysql (port 3306). Voici un exemple si votre firewall est à base d'iptables et que votre LAN est 192.168.0.* :

iptables -A INPUT -p tcp --destination-port 3306 -m iprange --src-range 192.168.0.1-192.168.0.254 -j ACCEPT

Sur le poste client

Installer le connecteur sur le client

sudo apt-get install libreoffice-mysql-connector

Voila, on a tout ce qu'il faut. L'application libre office base servira d'intermédiaire entre calc et le serveur mysql. Depuis un microsoft office. MS query aurait servi d'intermédiaire mais il est plus transparent que oooBase,.

Ouvrez libre office -> nouveau document-base de donnée.

Dans l'assistant de base de données, choisissez "Se connecter à une base de donnée existante", et "Mysql" comme ça:

loMysql1.jpeg

"Connecter directement" (c'est plus simple)

loMysql2.jpeg

Ma base s'appelle tinaderp. Adaptez en fonction de la votre, ainsi que l'IP du serveur: loMysql3.jpeg

Puis l'user Mysql: loMysql4.jpeg

A l'étape suivante, surtout cochez "Oui, je souhaite que l'assistant référence la base de données" Ce sera beaucoup plus facile pour retrouver les données dans le tableur puis cliquez sur terminer

Il vous demande d'enregistrer le fichier. Je vous conseille de donner au fichier le nom de votre base de donnée.

On arrive sur cette interface: loMysql6.jpeg

Créer quelques requêtes

Mon objectif ici est de pouvoir faire des statistiques. La bdd étant relativement brute. Si j'importe la base de données direct dans un tableur, ça va être pénible. (Ceux qui ont fait déjà des formules de recherches matricielles dans un tableur me comprendront). Je vais donc créer les requêtes SQL qui me feront les sous totaux, les décomptages tout en liant les tables afin d'avoir les intitulés et pas les clés. Bref, je veux avoir les tableaux que je n'aurai qu'à sélectionner pour établir les graphiques. Si ce n'est pas votre cas, que le contenu des tables de façon brute vous suffit. passez directement au chapitre suivant.

Requetes -> Creer une requête en mode SQL

loMysql7.jpeg

Testez la requête puis enregistrez la. je lui donne le nom sommeParTypeParMois Enregistrez votre fichier de base de données.

Dans le tableur scalc

Données -> table et pilote -> Créer

loMysql8.jpeg

Source de données enregistrée sous libre office loMysql9.jpeg

  • Sélectionnez votre base (qui a le nom du fichier base).
  • Le type: feuille si vous voulez une table brute, ou requête si vous voulez récupérer les données d'une requête.

loMysql10.jpeg

Organisez comme il faut colonnes lignes et données en faisant du glisser déposer. loMysql11.jpeg

Enjoy!

loMysql12.jpeg

Page top