# QGIS-SpreadSheetLayers

Plugin QGIS pour charger des couches depuis des fichiers feuille de calcul (*.ods, *.xls, *.xlsx)

## Description

Ce plugin ajoute une nouvelle entrée Ajouter une couche feuille de calcul dans le menu Couches / Ajouter une couche et un bouton correspondant dans la barre d’outils Couches. Ces deux liens ouvrent un même boite de dialogue avec quelques options:

- sélectionner le fichier

- nom de la couche

- sélection de la feuille

- entête en début de fichier

- ignorer des lignes

- charger la géométrie depuis les champs x et y

Lorsque le dialogue est accepté, il crée un nouveau fichier GDAL VRT dans le même dossier que le fichier de données source et le nom de la couche, étendu avec un suffixe .vrt, qui est chargé dans QGIS.

Lorque l’on utilise le même fichier une seconde fois, la boite de dialogue récupère les valeurs depuis le fichier .vrt existant.

## Limitations

A cause d’un manque de fonctionnalités dans GDAL/OGR:

- configuration de la ligne d’entête pour chaque fichier ;

- possibilité d’ignorer des lignes en début de fichier ;

- détection correcte de la fin des fichiers .xls.

Le plugin utilise une requête de sélection SQLITE avec des paramètres décalage et limite pour extraire les données correspondantes. Lorsque l’une de ces fonctionnalités est utilisée, ceci peut avoir des effets de bord.

Avec GDAL <= 1.11.1, le plugin ne peut charger la géométrie. Dans ce mode dégradé, la case à cocher geometry est alors bloquée. Pour obtenir la version de GDAL en cours d’utilisation, lancez ces commandes dans la console python de QGIS:

    import osgeo.gdal
    print(osgeo.gdal.__version__)

Lors de l’ouverture de fichiers feuille de calcul, GDAL/OGR opère une détection automatique des types de données (Date, Entier, Réel, Chaine de caractères, …). Cette détection automatique se produit en dehors des fonctionnalités d’entête et de lignes ignorées fournies par le plugin, lorsque vous les utilisez, GDAL/OGR ne pourra donc peut-être pas détecter correctement les types de données.

## Configuration

GDAL n’autorise pas la définition de la présence de la ligne d’entête pour chaque couche, ce choix est fait à travers des variables d’environnement pour chaque pilote OGR_ODS_HEADERS, OGR_XLS_HEADERS and OGR_XLSX_HEADERS, avec trois valeurs possibles FORCE, DISABLE and AUTO. Pour plus de détail, consultez la documentation des pilotes correspondants: http://www.gdal.org/drv_ods.html, http://www.gdal.org/drv_xls.html and http://www.gdal.org/drv_xlsx.html.

Vous pouvez changer ces valeurs dans les options de QGIS:

- ouvrez la boite de dialogue Préférences / Options;

- sélectionnez l’onglet Système et allez à la section Environnement;

- Cochez la case Utiliser des variables personnalisées.

- ajoutez une nouvelle ligne. Exemple:

  > Overwrite | OGR_ODS_HEADERS | FORCE

- redémarrer QGIS pour que la modification soit prise en compte.

## Installation pour le développement (linux)

    git clone git@github.com:camptocamp/QGIS-SpreadSheetLayers.git SpreadsheetLayers
    cd SpreadsheetLayers
    ln -s ${PWD}/SpreadsheetLayers ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins
    make

- lancez QGIS et activez le plugin SpreadsheetLayers

## Publier une nouvelle version

Mettre à jour d’abord les fichiers l10n.

    make tx-pull

Ensuite, créez un commit si nécessaire.

    git add -p .
    git commit -m 'Update l10n'

Maintenant, mettez à jour le fichier `SpreadsheetLayers/metadata.txt` avec le numéro de version.

Pour une version expérimentale :

    version=X.Y.Z-alpha+build
    experimental=False

Ou pour une version finale :

    version=X.Y.Z
    experimental=True

Et créez un nouveau commit, tag et push sur GitHub.

    git add -p .
    git commit -m 'Release version ...'
    git push origin master

Ensuite, créez le package et testez-le avec votre QGIS local.

    make package deploy
    qgis

Ensuite, si tout semble bon, vous pouvez créer un tag:

    git tag X.Y.Z
    git push origin X.Y.Z

Ensuite, connectez-vous au dépôt des plugins QGIS : https://plugins.qgis.org/accounts/login/

Et téléversez le fichier `dist/SpreadsheetLayers.zip` ici : https://plugins.qgis.org/plugins/SpreadsheetLayers/