banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 23 April 2021 09:51

laboetie
Juste Inscrit !
Date d'inscription: 13 Oct 2017
Messages: 3

QGIS: export xlsx en python

Bonjour,je cherche à exporter en xlsx quelques champs d'une couche.
J'arrive à exporter la totalité de la couche mais je n'arrive pas
à faire une sélection que de certains champs.

def export_csv(self) :

     layer = QgsProject.instance().mapLayersByName("NOM DE LA COUCHE")[0]
     
     writer = QgsVectorFileWriter.writeAsVectorFormat(layer, "C:/CHEMIN.xlsx", layer.dataProvider().encoding(), layer.crs(), "XLSX")

Merci de votre aide.

Hors ligne

 

#2 Fri 23 April 2021 11:46

Njoy
Participant actif
Lieu: Lyon
Date d'inscription: 29 Nov 2018
Messages: 89

Re: QGIS: export xlsx en python

Bonjour,

Une solution un peu brouillon,

dupliquer le layer,
supprimer les colonnes qui ne sont pas nécessaires sur ce nouveau layer,
exporter ce nouveau layer
supprimer ce nouveau layer

Hors ligne

 

#3 Fri 23 April 2021 12:27

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 948
Site web

Re: QGIS: export xlsx en python

Bonjour,


Une recette pour choisir les colonnes ci-dessous.

J'ai pris la méthode "writeAsVectorFormatV2" plutôt que "writeAsVectorFormat" qui est dépréciée (va disparaître dans les prochaines versions de QGIS)


Code:

layer = QgsProject.instance().mapLayersByName("NOM DE LA COUCHE")[0]
# layer = iface.activeLayer() # Si vous voulez tester directement depuis la couche vecteur sélectionnée


vectorOptions = QgsVectorFileWriter.SaveVectorOptions()
vectorOptions.driverName = 'XLSX'
vectorOptions.fileEncoding = layer.dataProvider().encoding()
cols = ['nom_col1', 'nom_col2']
field_indexes = [layer.dataProvider().fields().indexFromName(i) for i in cols]
vectorOptions.attributes = field_indexes
context = QgsProject.instance().transformContext()
mypath = "C:/CHEMIN.xlsx"

write_result, error_message = QgsVectorFileWriter.writeAsVectorFormatV2(layer, mypath, context, vectorOptions)

Cordialement

Dernière modification par ThomasG (Fri 23 April 2021 17:49)

Hors ligne

 

#4 Fri 23 April 2021 14:11

Njoy
Participant actif
Lieu: Lyon
Date d'inscription: 29 Nov 2018
Messages: 89

Re: QGIS: export xlsx en python

Merci pour la solution smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB