Suite

Mise à jour de la table attributaire à partir d'un fichier Excel à l'aide de Python

Mise à jour de la table attributaire à partir d'un fichier Excel à l'aide de Python


Je suis un peu nouveau sur Python, veuillez excuser pour une question aussi triviale. Il existe un fichier de formes (appelons-le Materials.shp). J'ai une table attributaire avec différents champs (par exemple, fenêtres, portes, etc… ). Le script que j'essaie d'écrire doit mettre à jour les valeurs de ces champs. Les nouvelles valeurs de ces champs que je reçois proviennent d'un fichier Excel. Est-il possible de faire ça? Quel est le moyen le plus simple pour le script de mettre à jour les valeurs de ces cellules ? J'utilise ArcGIS for Desktop.


Il existe plusieurs façons de lire le fichier Excel avec Python. Cela dépend de la version du fichier excel. J'ai utilisé xlrd dans le passé et c'était vraiment simple.

Dans cette page : http://www.python-excel.org/ Il y a une liste de modules que vous pouvez essayer de lire les données dans la feuille de calcul. La documentation pour chacun y est incluse. Cela pourrait vous être utile au moins pour cette partie de votre tâche.


Comment mettre à jour une table SQL à partir d'Excel

Si vous souhaitez permettre à vos utilisateurs non techniques de mettre à jour et de gérer facilement les données SQL Server à partir d'Excel, cliquez ici pour télécharger le complément SQL Spreads Excel.

SQL Spreads résout certains problèmes courants de gestion des données pour Microsoft SQL Server. Il permet de mettre à jour rapidement et simplement une table SQL à partir d'une feuille de calcul Excel. Et il vous donne le contrôle dont vous avez besoin pour gérer les données saisies par divers utilisateurs au sein d'une équipe collaborative.

Les utilisateurs finaux adorent travailler dans Excel

Les utilisateurs finaux adorent travailler dans Excel. Ils connaissent l'outil et sont libres de faire ce qu'ils veulent. C'est le cœur de l'application Excel tant appréciée, mais aussi le début des problèmes pour les personnes qui s'occupent des données. La liberté d'ajouter des cellules et d'entrer des valeurs « à votre guise » pose d'énormes problèmes lorsque vous essayez de stocker et de résumer les données de manière structurée.

La mise à jour ou la collecte de certaines données « non disponibles dans nos systèmes » auprès de collègues se fait souvent en envoyant un fichier Excel ou en plaçant une feuille de calcul sur un partage de fichiers.

Lorsque les utilisateurs mettent à jour des données dans une feuille de calcul Excel qui doivent être enregistrées ou mises à jour dans une table SQL, des problèmes comme ceux-ci se produisent généralement :

  • Les cellules de la feuille de calcul peuvent contenir des types de données non valides.
  • Il y aura des problèmes lorsque les utilisateurs modifieront la mise en page de la feuille.
  • Difficultés à garder une trace des versions précédentes de la feuille de calcul Excel.
  • Difficile de savoir qui a modifié une valeur spécifique dans une feuille.
  • Difficile d'extraire des données Excel (avec un outil tel que SSIS).
  • Il peut y avoir un délai de plusieurs heures entre le moment où un utilisateur entre les chiffres et leur apparition dans la base de données.

Dans la finance, l'informatique et d'autres domaines, les données structurées sont une partie vitale des opérations. Dans ces domaines, vous pouvez - littéralement en quelques minutes - laisser vos utilisateurs finaux mettre à jour eux-mêmes les données dans des tables SQL structurées – à l'aide d'Excel. Aucune expérience de codage ou formation approfondie n'est nécessaire.

Voici des informations sur la façon dont vous pouvez utiliser SQL Spreads, un complément Microsoft Excel, pour mettre à jour efficacement et avec précision une base de données SQL Server à partir d'Excel. Je vais montrer comment importer facilement vos tables SQL Server dans Excel pour une mise à jour/gestion facile. Ensuite, vous montrer comment partager le document avec vos utilisateurs finaux et comment garder une trace de qualité des données.

Comment mettre à jour une table SQL à partir d'Excel

Pour configurer un document Excel afin qu'il fonctionne avec les données d'une table SQL Server, suivez ces quelques étapes simples :

  1. Télécharger et installez le complément SQL Spreads Excel.
  2. Accédez à l'onglet SQL Spreads dans Excel et sélectionnez le mode Conception.
  3. Une liste de bases de données apparaîtra sur la droite. Choisissez la base de données que vous utilisez et sélectionnez une table SQL à mettre à jour à partir d'Excel.
  4. Dans l'onglet Colonnes, vous pouvez affiner la présentation de votre tableau dans Excel. Vous pouvez sélectionner les colonnes que vous souhaitez mettre à jour, les réorganiser dans l'ordre que vous préférez et modifier leurs noms si vous le souhaitez.
  5. Lorsque vous avez fini de peaufiner votre table, accédez à la feuille de calcul et commencez à mettre à jour les données à partir de SQL Server. Lorsque vous appuyez sur le bouton Enregistrer, les modifications sont enregistrées dans votre table SQL Server.

Il existe également plusieurs autres grands avantages du concepteur pour connecter facilement une feuille de calcul Excel à une table dans SQL Server. Par exemple:

  • Définir quelles colonnes sont modifiables et lesquelles sont en « lecture seule »
  • Sélectionnez les lignes de la base de données chargées dans la feuille de calcul Excel
  • Activez le suivi des modifications et l'application insère alors la date et l'heure de modification d'une ligne, ainsi que l'utilisateur effectuant la modification.

Laissez vos utilisateurs non techniques mettre à jour et gérer les données SQL Server

Après avoir quitté le mode Conception, vous pouvez partager votre document Excel comme n'importe quel autre fichier Excel. Tous les paramètres suivront le document et les autres utilisateurs peuvent utiliser votre fichier Excel pour mettre à jour les tables SQL à partir d'Excel.

Mais peut-être que l'un des plus grands avantages de SQL Spreads est sa facilité d'utilisation. Et les avantages ne sont pas seulement pour les administrateurs, mais aussi pour les utilisateurs autorisés dans l'ensemble de votre entreprise ou entreprise. Les utilisateurs non techniques peuvent utiliser des documents Excel connectés à SQL Server que vous créez et partagez avec eux. Le résultat sera une collaboration précise et efficace avec des sauvegardes, y compris une détection de conflit intégrée.

Qualité des données assurée

Pour obtenir la meilleure qualité de données possible, SQL Spreads utilise plusieurs méthodes pour garantir la validité des données saisies :

  • Lorsque les chiffres sont saisis, ils sont validés par rapport aux types de colonnes de la base de données, et l'utilisateur reçoit un retour immédiat.
  • Chaque ligne modifiée est suivie dans la base de données pour voir quand une ligne a été modifiée et par qui.
  • Un système de détection de conflit intégré permet une collaboration sûre et facile.
  • Lors du partage du document avec d'autres, ils peuvent se voir attribuer un rôle d'éditeur pour désactiver le mode Conception afin de protéger la configuration de la feuille Excel que vous avez créée.

Interface Excel familière et conviviale

Les données des tables SQL Server peuvent être directement mises à jour à partir d'Excel. Les utilisateurs sont authentifiés à l'aide de leur identifiant Windows et ne peuvent travailler qu'avec les documents Excel pour lesquels ils sont autorisés.

Les données sont automatiquement validées lorsque les utilisateurs entrent leurs chiffres via SQL Spreads. Et les données d'autres documents Microsoft Excel peuvent être collées directement dans les documents connectés à SQL Server.

Une solution à faible stress et à haute valeur ajoutée pour votre organisation

  • Utilisez Excel pour travailler avec des données dans des tables SQL Server.
  • Laissez les utilisateurs non techniques travailler avec les données SQL Server.
  • Assurez-vous que les données saisies sont valides.

Mais des avantages plus étendus peuvent être offerts à votre entreprise ou entreprise en utilisant SQL Spreads. Vous constaterez immédiatement un gain de temps à tous les niveaux.

  • Tout d'abord, la configuration est vraiment rapide et simple.
  • Deuxièmement, lorsque les utilisateurs finaux entrent des données, SQL Spreads les guidera à travers la bonne façon d'entrer les données.
  • Troisièmement, les propriétaires de données auront l'avantage de pouvoir accéder facilement aux données centralisées via Excel.
  • Quatrièmement, vous pouvez mettre fin aux difficultés d'importation de données Excel à l'aide de SSIS ou de maintenance de scripts VBA.
  • Enfin, fini les problèmes de dépannage et de correction créés par les utilisateurs qui modifient la feuille de calcul.

Ces processus fastidieux et ces frustrations sont remplacés par SQL Spreads avec une gestion des données rapide et fiable.

Essayez SQL Spreads de première main pour prendre le contrôle de la gestion de vos données SQL Server

Essayez SQL Spreads en téléchargeant la nouvelle version d'essai de SQL Spreads de cette page.

Il y a aussi vidéo de démonstration disponible montrant comment vous pouvez utiliser SQL Spreads pour créer un document Excel afin de mettre à jour la table SQL à partir d'Excel.

Note de la rédaction : cet article de blog a été publié à l'origine pour une version précédente de SQL Spreads et a été entièrement remanié et mis à jour pour plus de précision et d'exhaustivité.


Le plan d'action en 4 étapes

  1. Examinez l'ensemble de données CSV exporté pour vous assurer que les champs SharePoint correspondent aux données CSV
  2. Télécharger et installer SharePoint Online Management Shell
  3. Installer la bibliothèque PowerShell PnP
  4. Écrire et exécuter le script dans PowerShell

Vous trouverez ci-dessous un graphique sur l'apparence de ce processus. C'est parti !

Étape 1 : Examinez l'ensemble de données CSV exporté pour vous assurer que les champs SharePoint correspondent aux données CSV

La première étape est très importante pour garantir des importations de données vers SharePoint sans erreur. Nous devons vérifier les colonnes du fichier CSV pour nous assurer qu'elles correspondent aux types de données des champs SharePoint associés. Ouvrir un fichier CSV et examiner l'ensemble de données.

Dans mon exemple, j'ai un CustomerData.csv fichier avec quelques enregistrements.

Quelques points à connaître :

  • La première ligne du fichier CSV doit représenter le nom de la colonne
  • Toutes les données de chaque colonne doivent avoir le même type de données pour un résultat cohérent
  • Si votre liste SharePoint comporte une colonne de choix, vous devez vous assurer que les données de la colonne du fichier CSV correspondent à toutes les options disponibles dans la colonne de choix SharePoint. Dans mon exemple ci-dessus, la liste SharePoint a une colonne nommée Statut qui est une colonne de choix avec seulement deux options : actif et Inactif. Si mon jeu de données CSV a un enregistrement de ligne avec le statut comme Ouvert, alors cela importerait avec une erreur

Nous pouvons voir dans mon exemple de fichier CSV que Titre, adresse, ville et état sont des champs de texte d'une ligne. Depuis le Notes détaillées peut avoir plus de 255 caractères, nous considérerons ce champ comme un champ de texte multiligne. Date de début du contrat est un champ de date et Statut est une colonne de choix avec deux options (actif et Inactif).

Maintenant, passons en revue la liste SharePoint pour vous assurer qu'elle peut contenir les données du fichier CSV. Accédez à votre site SharePoint et ouvrez votre liste. Dans mon exemple, j'ai une liste SharePoint appelée Base de données clients.

Pour ouvrir les paramètres de la liste SharePoint, cliquez sur l'icône d'engrenage dans le coin supérieur droit de l'écran et choisissez Paramètres de liste dans le menu déroulant.

Faites défiler jusqu'au Colonnes section et vérifiez que le type de données de vos colonnes de liste SharePoint correspond à toutes les colonnes du fichier CSV.

Dans mon exemple, j'ai une correspondance parfaite entre le fichier CSV et la liste SharePoint. Si vous constatez une incohérence dans votre jeu de données, vous devrez décider soit de corriger vos données historiques (fichier CSV) soit de modifier les types de colonnes SharePoint. Passons à l'étape suivante du processus.

Étape 2 : Téléchargez et installez SharePoint Online Management Shell

Comme tous les autres produits Microsoft, SharePoint possède son propre shell de gestion. Il s'agit d'un module PowerShell qui peut être utilisé pour gérer les collections de sites et les sites SharePoint Online/SharePoint sur site. Vous pouvez télécharger le SharePoint Online Management Shell ici, et assurez-vous de vérifier le Configuration requise et téléchargez la bonne version de Management Shell.

Noter: Pour utiliser SharePoint Online Management Shell, vous devez disposer des droits d'administrateur global de SharePoint Online.

Étape 3 : Installer la bibliothèque PowerShell PnP

Parlons très brièvement de ce qu'est la bibliothèque PnP, PnP PowerShell est une bibliothèque qui contient des applets de commande PowerShell pour gérer les artefacts SharePoint. Vous pouvez mettre en service des sites et des collections de sites, gérer des listes, des bibliothèques, etc. Pour plus de détails, consultez la documentation Microsoft&rsquos et la présentation de PowerShell PnP.

Pour installer la bibliothèque PnP PowerShell, ouvrez SharePoint Online Management Shell et tapez l'applet de commande ci-dessous :

Module d'installation SharePointPnPPowerShellOnline

Noter: Pour exécuter correctement la commande, assurez-vous d'ouvrir Management Shell en tant qu'administrateur.

Vous pouvez utiliser la bibliothèque PowerShell PnP pour SharePoint en ligne, sur site 2016 et sur site 2013. Vous devrez installer différents modules pour chaque version du produit.

SharePoint en ligne : Module d'installation SharePointPnPPowerShellOnline

SharePoint 2016 : Module d'installation SharePointPnPPowerShell2016

SharePoint 2013 : Module d'installation SharePointPnPPowerShell2013

Une fois le module installé, nous sommes prêts à écrire notre script pour importer des milliers d'enregistrements du fichier CSV vers SharePoint Online.

Étape 4 : écrivez et exécutez le script

Avant d'écrire le script, considérons sa mécanique :

  • Se connecter à l'environnement SharePoint Online
  • Chargez le contenu du fichier CSV dans une variable, ce qui crée un tableau
  • Parcourez chaque élément de la variable (tableau) et créez un élément associé dans la liste SharePoint Online

Tout d'abord, nous devons nous connecter à notre environnement SharePoint Online. Encore une fois, assurez-vous que vous disposez des droits d'administrateur global SharePoint pour exécuter les applets de commande ci-dessous. Pour nous connecter à l'environnement, nous allons enregistrer les informations d'identification de l'administrateur dans la variable appelée $informations d'identification.

$credentials = Get-Credential -Message &ldquoVeuillez entrer les informations d'identification SharePoint Online&rdquo

Après avoir exécuté cette commande, vous serez invité à saisir votre nom d'utilisateur et votre mot de passe.

N'oubliez pas que tout ce qui est enregistré dans les variables est bon pour exécuter une session PowerShell. Si vous fermez et rouvrez le shell de gestion, vous devrez recréer toutes les variables.

Ensuite, nous allons créer une variable appelée $Site avec l'URL de votre site SharePoint :

$Site=&rdquohttps://URL DU SITE.sharepoint.com/&rdquo

Noter: Vous n'avez pas besoin d'inclure le nom de la liste/bibliothèque SharePoint dans l'URL.

Maintenant, en utilisant ces deux variables ($Identifiants et $Site), nous utiliserons l'applet de commande PnP pour nous connecter à l'environnement SharePoint Online :

Connect-PnPOnline -Url $Site -Credentials $credentials

Pour vous assurer que vous êtes dans la bonne collection de sites, vous pouvez exécuter Obtenir-PnPlist cmdlet pour localiser la liste SharePoint avec laquelle vous essayez de travailler.

Selon le résultat de l'applet de commande Get-PnPlist, nous sommes au bon endroit.

Ensuite, nous allons charger les données du fichier CSV dans la variable nommée $DonnéesClient.

$CustomerData = Import-CSV &ldquoC:ProjectCustomerData.csv&rdquo

Pour vérifier que votre jeu de données s'est correctement chargé, vous pouvez afficher le contenu du fichier CSV. Tapez le nom de la variable et appuyez sur Entrée.

Si vous disposez d'un ensemble de données volumineux, vous ne souhaiterez peut-être pas afficher la liste entière. Exécutez l'applet de commande ci-dessous pour afficher les trois premiers enregistrements de l'ensemble de données.

$DonnéesClient | Sélectionner-Objet -Premier 3

Génial, nous sommes connectés au bon environnement et nous avons chargé l'ensemble de données à utiliser. Ensuite, nous allons parcourir chaque élément et dans le $DonnéesClient variable et créez un élément associé dans la liste SharePoint.


Toutes les réponses

Pourrait fonctionner

ok, je suppose que je n'ai pas besoin de vous dire de faire une sauvegarde de la table et d'utiliser la sauvegarde pour tester cela sur :)

Importez ces données.
Maintenant.. "La feuille de calcul contient 5 champs, dont les deux premiers en combinaison sont les clés uniques et sont donc utilisés pour sélectionner les enregistrements de la table SQL à mettre à jour. "

Cela signifie-t-il que votre ID dans la table SQL est "BG123456" (tout en une colonne, dans une seule chaîne) ?

Si c'est le cas, transformez-le lors de l'importation afin qu'il crée un champ appelé My_ID, ou après l'importation, créez un nouveau col et placez-le dedans

METTRE À JOUR mySQLTable
SET mySQLTable.desiredcolumn = myImportTable.desiredcolumn
DE mySQLTable
INNER JOIN myImportTable
SUR mySQLTable.unique_id = myImportTable.my_id

Court et doux.

Merci pour la réponse rapide et précise. Les cinq champs de l'entrée correspondent à cinq dans la table SQL et la clé d'index est une concaténation du premier et du deuxième donc oui, la clé est BG123456. Je concaténe simplement les champs de chaque côté de la ligne « ON » pour obtenir ce que je veux.
Merci encore.


Créer des tableaux externes pour Excel

Après avoir créé la source de données externe, utilisez les instructions CREATE EXTERNAL TABLE pour établir un lien vers les données Excel de votre instance SQL Server. Les définitions des colonnes du tableau doivent correspondre à celles exposées par le pilote ODBC CData pour Excel. Vous pouvez vous référer à l'onglet Tables de l'assistant de configuration DSN pour voir la définition de la table.

Exemple d'instruction CREATE TABLE

L'instruction pour créer une table externe basée sur une feuille Excel ressemblerait à ce qui suit :

Après avoir créé des tables externes pour Excel dans votre instance SQL Server, vous pouvez désormais interroger simultanément des données locales et distantes. Grâce au traitement de requêtes intégré dans le pilote ODBC CData, vous savez qu'un maximum de traitement de requêtes est transféré vers Excel, libérant ainsi des ressources locales et de la puissance de calcul. Téléchargez un essai gratuit de 30 jours du pilote ODBC pour Excel et commencez dès aujourd'hui à travailler avec des données Excel en direct avec vos données SQL Server.

CData Software est l'un des principaux fournisseurs de solutions d'accès aux données et de connectivité. Nos connecteurs basés sur des normes rationalisent l'accès aux données et isolent les clients des complexités de l'intégration avec des bases de données sur site ou cloud, SaaS, API, NoSQL et Big Data.


Utilisation de Microsoft Query dans Excel pour se connecter à FTP

Le pilote FTP ODBC est un outil puissant qui vous permet de vous connecter avec des données en direct à partir de fichiers et de répertoires distants, directement à partir de toutes les applications prenant en charge la connectivité ODBC.

Accédez aux données distantes comme vous le feriez avec une base de données via une interface de pilote ODBC standard.

Cet article utilise le pilote ODBC CData pour FTP pour importer des données dans Excel avec Microsoft Query. Cet article montre également comment utiliser des paramètres avec Microsoft Query.

Le pilote CData ODBC pour FTP utilise l'interface ODBC standard pour lier les données FTP avec des applications telles que Microsoft Access et Excel. Suivez les étapes ci-dessous pour utiliser Microsoft Query pour importer des données FTP dans une feuille de calcul et fournir des valeurs à une requête paramétrée à partir de cellules d'une feuille de calcul.

Si vous ne l'avez pas déjà fait, spécifiez d'abord les propriétés de connexion dans un DSN ODBC (nom de la source de données). C'est la dernière étape de l'installation du pilote. Vous pouvez utiliser l'administrateur de source de données ODBC Microsoft pour créer et configurer des DSN ODBC.

Pour vous connecter aux serveurs FTP ou SFTP, spécifiez au moins RemoteHost et FileProtocol. Spécifiez le port avec RemotePort.

Définissez l'utilisateur et le mot de passe pour effectuer l'authentification de base. Définissez SSHAuthMode pour utiliser l'authentification SSH. Consultez la section Mise en route de la documentation d'aide du fournisseur de données pour plus d'informations sur l'authentification via SSH.

Définissez SSLMode et SSLServerCert pour sécuriser les connexions avec SSL.

Le fournisseur de données répertorie les tables en fonction des dossiers disponibles sur votre serveur FTP. Définissez les propriétés de connexion suivantes pour contrôler la vue relationnelle du système de fichiers :

  • RemotePath : définissez-le sur le répertoire de travail actuel.
  • TableDepth : définissez cette option pour contrôler la profondeur des dossiers à répertorier en tant que vues.
  • FileRetrievalDepth : définissez cette option pour récupérer et répertorier les fichiers de manière récursive à partir de la table racine.

Les procédures stockées sont disponibles pour télécharger des fichiers, télécharger des fichiers et envoyer des commandes de protocole. Consultez le chapitre Modèle de données de la documentation du fournisseur de données FTP pour plus d'informations.

Vous pouvez ensuite travailler avec des données FTP en direct dans Excel.

  1. Dans Excel, ouvrez l'onglet Données et choisissez À partir d'autres sources -> À partir de Microsoft Query.
  2. Choisissez le DSN FTP. Sélectionnez l'option permettant d'utiliser l'assistant de requête pour créer/modifier des requêtes.
  3. Dans l'assistant de requête, développez le nœud de la table que vous souhaitez importer dans votre feuille de calcul. Sélectionnez les colonnes que vous souhaitez importer et cliquez sur la flèche pour les ajouter à votre requête. Vous pouvez également sélectionner le nom de la table pour ajouter toutes les colonnes de cette table.
  4. La page Filtrer les données vous permet de spécifier des critères. Par exemple, vous pouvez limiter les résultats en définissant une plage de dates.
  5. Si vous souhaitez utiliser des paramètres dans votre requête, sélectionnez l'option permettant de modifier la requête dans Microsoft Query.

Pour définir un paramètre dans la requête, vous devrez modifier directement l'instruction SQL. Pour ce faire, cliquez sur le bouton SQL dans l'éditeur de requête. Si vous avez défini des critères de filtre plus tôt, vous devriez déjà avoir une clause WHERE dans la requête.

Pour utiliser un paramètre, utilisez un "?" caractère comme caractère générique pour la valeur d'un champ dans la clause WHERE. Par exemple, si vous importez le MyDirectory, vous pouvez définir "FilePath=?".

CData Software est l'un des principaux fournisseurs de solutions d'accès aux données et de connectivité. Nos connecteurs basés sur des normes rationalisent l'accès aux données et isolent les clients des complexités de l'intégration avec des bases de données sur site ou cloud, SaaS, API, NoSQL et Big Data.


Créer une table dans Mobile et Progressive Web App

Pour créer un tableau dans une application mobile, que vous distribuez en tant qu'application mobile native ou application Web progressive (PWA), récupérez des données sur l'écran, puis ajoutez le tableau à l'écran. Voici un exemple.

  1. Cliquez avec le bouton droit sur l'écran dans le Interface onglet et sélectionnez Récupérer les données de la base de données ou alors Récupérer des données à partir du stockage local. L'éditeur d'agrégats s'ouvre.
  2. Faites glisser un agrégat depuis le Données à l'éditeur d'agrégats. L'aperçu des données s'affiche maintenant.
  3. Retournez à l'écran. Recherchez Table dans la boîte à outils du widget. Faites glisser le tableau vers l'écran.
  4. Sélectionnez le tableau. De la liste dans Tableau > Propriétés > La source sélectionnez la liste qui a été créée précédemment en ajoutant l'agrégat.

Développez l'agrégat et l'entité associés à l'écran. Pour créer les colonnes, faites glisser les attributs d'entité vers la table. L'aperçu du tableau se remplit avec un échantillon de l'aperçu des données.


1 réponse 1

Pour que cela fonctionne pour Python 3, j'avais besoin de changer :

Donc juste une minuscule pour tkinter (une recherche/remplacement globale). Warwick, vous avez beaucoup de code dans une seule grande classe !
La création et la mise en forme de la feuille de calcul peuvent être extraites dans une autre fonction externe à la classe simpleapp_tk.

Par exemple, si vous deviez faire cela, le code à l'intérieur du onButtonClick devrait ressembler à :

Avec le démarrage de la fonction de création Excel comme suit :

(Je viens de faire un copier/coller moi-même), et bien sûr, la fin de la fonction de création de feuille de calcul étant comme ceci :

le return None signifie que s'il y a eu une erreur lors de la création du fichier à l'intérieur du grand bloc try/except , il renverra une valeur vide à la classe GUI. Le résultat étant rien, l'interface graphique affichera le message correct (le même que celui que vous avez actuellement).

Veuillez essayer de faire ce changement, et n'oubliez pas de faire une sauvegarde de votre code avant de le modifier.

Vous devriez rencontrer un ou deux bugs mineurs, tels que :

Cependant, je suis convaincu que vous serez en mesure de comprendre les bugs. Si vous apportez ce changement, votre code sera un petit pas vers l'amélioration. Vous aurez séparé la création du fichier xlsx de l'interface graphique. À l'avenir, s'il y a un problème lors de la création de la feuille de calcul, vous savez ne regarder que la fonction make_me_a_spreadsheet - et non la classe GUI. Beaucoup plus facile de traquer les bugs!

Vous pouvez suivre cette méthodologie pour améliorer votre code, c'est-à-dire extraire des étapes/actions spécifiques dans une fonction distincte (avec transmission et transmission de valeurs). Veuillez consulter certains des autres exemples Python proposés sur Code Review pour obtenir plus d'idées.


Comment convertir des tableaux de faits de tableaux Excel à l'aide de l'éditeur de requête

Si vous disposez d'un tableau Excel conçu pour la saisie de données, il se peut qu'il ne soit pas dans le meilleur format pour l'analyse de données ou votre modèle de données. À l'aide de l'éditeur de requête et des colonnes UnPivot, vous pouvez conserver la table d'origine et créer une version que vous pouvez utiliser pour l'analyse en tant que table de faits dimensionnels.

Le tableau illustré ci-dessous est conçu pour faciliter la saisie des données, mais il pourrait être préférable pour l'analyse. Je souhaite traiter le numéro de semaine, le scénario et la classification comme des dimensions dans les requêtes. Je souhaite également combiner le numéro de semaine avec les dates fiscales pour créer une dimension DateTime.

En utilisant un ensemble de fonctionnalités peu connues dans Excel, cela devient facile à faire. Avec la cellule du haut en surbrillance dans le tableau, le scénario en tant que ligne du haut n'est qu'une ligne de titre. Sous Données dans la barre d'outils, puis sélectionnez le À partir du tableau option. L'écran de l'éditeur de requête s'affiche.

Mettez en surbrillance les colonnes que vous souhaitez transposer, dans ce cas, Version et Classification. Dans le Liste déroulante des options Annuler le pivotement des colonnes, sélectionnez Annuler le pivot d'autres colonnes. Cela se transformera en la version ci-dessous.

Une dernière modification pour changer le Attribut nom de colonne à NumSemaine, puis revenez au Domicile onglet et sélectionnez Fermer & Charger.

Le résultat ci-dessous est une table de mise à jour dans un meilleur format à utiliser dans un modèle de données. L'onglet Feuille de calcul a été renommé Table de faits dans cet exemple.

Ce didacticiel rapide montre comment prendre une feuille Excel utilisée pour la saisie de données et la convertir en une table de faits à l'aide de la fonctionnalité UnPivot Columns dans les outils de requête de données dans Excel.

Laissez-moi savoir ce que vous pensez. Cela s'intègre-t-il dans votre flux de travail ? Faites-moi savoir si vous avez des astuces que vous utilisez.


Mise à jour d'une table attributaire à partir d'un fichier Excel en Python - Systèmes d'Information Géographique

Un simple composant de réaction pour créer une feuille de calcul.

  • Sélectionnez des cellules, coupez, copiez et collez des cellules
  • Navigation à l'aide des touches du clavier
  • Suppression à l'aide des touches du clavier
  • Rappels pour onCellsChanged, valueRenderer (données visibles)
  • dataRenderer (données sous-jacentes dans l'entrée, prend la valeur par défaut)
  • Fournissez vos propres éditeurs et visualisez les contrôles avec des moteurs de rendu personnalisés
  • Contrôle étendu sur le balisage généré via des moteurs de rendu personnalisés

React-Datasheet génère un tableau avec les cellules. Un double-clic ou une saisie modifie la valeur et, si elle est modifiée, lance un rappel onCellsChanged. Coller des données tabulaires ou supprimer une plage de cellules appelle également onCellsChanged .

Les données fournies doivent être un tableau de lignes, et chaque ligne doit inclure les cellules.

Cellules avec des données sous-jacentes

Il y a deux valeurs que chaque cellule affiche. Le premier est via valueRenderer et le second via dataRenderer . Lorsqu'une cellule est en Mode édition, il affichera la valeur renvoyée par dataRenderer . Il doit renvoyer une chaîne car cette valeur est définie dans un champ de saisie. Chacun de ces rappels reçoit la valeur de la cellule ainsi que les coordonnées de la cellule dans la feuille de calcul. Cela vous permet d'appliquer une logique de formatage au moment du rendu, telle que toutes les cellules de la troisième colonne doivent être formatées en dates.

Cellules avec composant sous-jacent

Cela rend une seule cellule avec la valeur 5. Une fois en mode édition, le bouton apparaîtra.

Cellules avec des attributs supplémentaires

Cela rend 2 lignes, chacune avec deux cellules, les cellules de la première ligne auront un attribut data-hint et les 2 autres n'en auront pas.

React-Datasheet vous permet de remplacer les moteurs de rendu à la fois pour la structure globale (lignes, cellules, la feuille elle-même) ainsi que les éditeurs et les visionneuses pour les cellules individuelles. Cela vous permet de refaçonner radicalement la feuille pour l'adapter à vos besoins.

Par exemple, cela montre comment ajouter des en-têtes séparés et une case à cocher au début de chaque ligne pour contrôler l'état "sélectionné" de la ligne. Il spécifie également un moteur de rendu de vue personnalisé et un éditeur personnalisé pour la première colonne de chaque ligne :

Noter: Par souci de concision, dans cet exemple, les moteurs de rendu personnalisés sont tous définis comme des fonctions de flèche à l'intérieur du rendu, mais l'utilisation d'une fonction liée dans le composant parent ou d'un composant personnalisé séparé vous permettra d'éviter de nombreux rendus inutiles.

Option Taper La description
Les données Déployer Tableau de lignes et chaque ligne doit contenir les objets de cellule à afficher
valueRenderer fonction Méthode pour rendre la valeur de la cellule function(cell, i, j) . Ceci est visible par défaut
dataRenderer fonction Méthode pour rendre la valeur sous-jacente de la fonction de cellule (cellule, i, j) . Ces données sont visibles une fois en mode édition.
débordement 'wrap'|'nowrap'|'clip' Grille par défaut pour savoir comment rendre le texte de débordement dans les cellules
onCellsChanged fonction Gestionnaire onCellsChanged : function(arrayOfChanges[, arrayOfAdditions]) <> , où changes est un déployer des objets de la forme . Voir ci-dessous pour plus de détails.
onContextMenu fonction Gestionnaire de menu contextuel : fonction(événement, cellule, i, j)
parseColler fonction function (string) <> Si défini, la fonction sera appelée avec les données brutes du presse-papiers. Il doit retourner un tableau de tableaux de chaînes. Ceci est utile lorsque le presse-papiers peut contenir des données avec des délimiteurs de champ ou de ligne irréguliers. S'il n'est pas défini, les lignes seront divisées avec des sauts de ligne et les cellules avec des tabulations.
isCellNavigable fonction fonction (cellule, ligne, col) Si elle est définie, la fonction est utilisée pour déterminer si la navigation vers la cellule indiquée doit être autorisée ou non. Si ce n'est pas le cas, l'utilisation du curseur ou de la navigation par tabulation ignorera les cellules non autorisées jusqu'à ce qu'elle trouve la prochaine cellule autorisée.
poignéeCopier fonction fonction (< événement, dataRenderer, valueRenderer, données, début, fin, plage >) Si elle est définie, cette fonction est appelée chaque fois que l'utilisateur copie des cellules. La chaîne de retour de cette fonction est stockée dans le presse-papiers.

Ce qui suit sont des fonctions facultatives ou React Component qui peuvent complètement remplacer les moteurs de rendu natifs de la feuille de données React. Pour savoir quels accessoires sont transmis, voir les moteurs de rendu personnalisés

Option Taper La description
SheetRenderer fonction Fonction facultative ou React Component pour restituer l'élément de feuille principal. La valeur par défaut rend un élément de table.
ligneRenderer fonction Fonction facultative ou React Component pour restituer chaque élément de ligne. La valeur par défaut rend un élément tr.
cellRenderer fonction Fonction facultative ou React Component pour restituer chaque élément de cellule. La valeur par défaut rend un élément td.
visionneuse de valeurs fonction Fonction facultative ou React Component pour personnaliser la façon dont la valeur de chaque cellule de la feuille est affichée. Affecte chaque cellule de la feuille. Voir les options de cellule pour remplacer des cellules individuelles.
éditeur de données fonction Fonction facultative ou composant React pour afficher un éditeur personnalisé. Affecte chaque cellule de la feuille. Voir les options de cellule pour remplacer des cellules individuelles.
choisi objet Optionnel. Si la sélection est contrôlée ou non. Doit être un objet de ce format : < start : < i : nombre, j nombre >, fin : < i : nombre, j : nombre >> , ou null pour aucune sélection.
onSelect fonction Optionnel. fonction (< début, fin >) <> Déclenchée à chaque changement de sélection. start et end ont le même format que l'accessoire sélectionné.

gestionnaire onCellsChanged(arrayOfChanges[, arrayOfAdditions])

React-DataSheet appellera ce rappel chaque fois que les données de la grille changent :

  • Lorsque l'utilisateur entre une nouvelle valeur dans une cellule
  • Lorsque l'utilisateur appuie sur la touche Suppr avec une ou plusieurs cellules sélectionnées
  • Lorsque l'utilisateur colle des données tabulaires dans le tableau

L'argument du rappel sera généralement un déployer d'objets avec ces propriétés :

Biens Taper La description
cellule objet l'objet de cellule d'origine que vous avez fourni dans la propriété data. Cela peut être nul (voir ci-dessous)
ligne numéro index de ligne de la cellule modifiée
col numéro index de colonne de la cellule modifiée
valeur tout La nouvelle valeur de cellule. Il s'agit généralement d'une chaîne, mais un éditeur personnalisé peut fournir n'importe quel type de valeur.

Si la modification est le résultat d'une modification par l'utilisateur, le tableau contiendra un seul objet de modification. Si l'utilisateur colle des données ou supprime une plage de cellules, le tableau contiendra un élément pour chaque cellule affectée.

Ajouts : Si l'utilisateur colle des données qui s'étendent au-delà des limites de la grille (par exemple, en collant des données de deux rangées sur la dernière ligne), il y aura un deuxième argument au gestionnaire contenant un tableau d'objets qui représentent l'out-of -limite les données. Ces objets auront les mêmes propriétés, sauf :

  • Il n'y a pas de propriété de cellule
  • soit row ou col , soit les deux, seront en dehors des limites de votre grille d'origine. Ils correspondront aux indices que les nouvelles données occuperaient si vous développiez votre grille pour les contenir.

Vous pouvez choisir d'ignorer les ajouts ou vous pouvez étendre votre modèle pour accueillir les nouvelles données.

Auparavant, React-DataSheet prenait en charge deux gestionnaires de modifications. Ceux-ci sont toujours pris en charge pour la compatibilité descendante, mais seront supprimés à un moment donné dans le futur.

Option Taper La description
sur le changement fonction Gestionnaire onChange : function(cell, i, j, newValue) <>
surColler fonction Gestionnaire onPaste : function(array) <> Si défini, la fonction sera appelée avec un tableau de lignes. Chaque ligne a un tableau d'objets contenant la cellule et la valeur brute collée. Si la valeur collée ne peut pas être mise en correspondance avec une cellule, la valeur de la cellule sera indéfinie.

L'objet cell est ce qui est renvoyé au rappel onChange. Ils peuvent également contenir les options suivantes

Option Taper Défaut La description
lecture seulement Bool faux La cellule ne passera jamais en mode édition
clé Chaîne de caractères indéfini Par défaut, chaque cellule reçoit la clé du numéro de col et du numéro de ligne. Cela remplacerait cette clé
nom du cours Chaîne de caractères indéfini Noms de classe supplémentaires pour les cellules.
composant ReactElement indéfini Insérez un élément de réaction ou JSX dans ce champ. Cela rendra le mode d'édition
forceComposant bool faux Restitue le contenu du composant à tout moment, même lorsqu'il n'est pas en mode édition
disableEvents bool faux Makes cell unselectable and read only
colSpan numéro 1 The colSpan of the cell's td element
rowSpan numéro 1 The rowSpan of the cell's td element
width number or String indéfini Sets the cell's td width using a style attribute. Number is interpreted as pixels, strings are used as-is. Note: This will only work if the table does not have a set width.
overflow 'wrap'|'nowrap'| 'clip' indéfini How to render overflow text. Overrides grid-level overflow option.
valueViewer func indéfini Optional function or React Component to customize the way the value for this cell is displayed. Overrides grid-level valueViewer option.
dataEditor func indéfini Optional function or React Component to render a custom editor. Overrides grid-level dataEditor option.

Each of the following custom renderers should be either a React Component or a function that takes a props argument and returns a react element (a.k.a stateless functional component). React-DataSheet will supply certain properties to each renderer.

In some cases React-DataSheet will include event handlers as properties to your custom renderer. You must hook up these handlers to your component or aspects of React-DataSheet's built-in behavior will cease to work.

Except for valueViewer and dataEditor , each custom renderer will receive react's regular props.children . Be sure to render in your custom renderer.

The sheetRenderer is responsible for laying out the sheet's main parent component. By default, React-DataSheet uses a table element. React-DataSheet will supply these properties:

Option Type Description
data Array The same data array as from main ReactDataSheet component
className String Classes to apply to your top-level element. You can add to these, but your should not overwrite or omit them unless you want to implement your own CSS also.
children Array or component The regular react props.children . You must render within your custom renderer or you won't see your rows and cells.

The rowRenderer lays out each row in the sheet. By default, React-DataSheet uses a tr element. React-DataSheet will supply these properties:

Option Type Description
row numéro The current row index
cells Array The cells in the current row
children Array or component The regular react props.children . You must render within your custom renderer or you won't see your cells.

The cellRenderer creates the container for each cell in the sheet. The default renders a td element. React-DataSheet will supply these properties:

Option Type Description
row numéro The current row index
col numéro The current column index
cell Object The cell's raw data structure
className String Classes to apply to your cell element. You can add to these, but your should not overwrite or omit them unless you want to implement your own CSS also.
style Object Generated styles that you should apply to your cell element. This may be null or undefined.
selected Bool Is the cell currently selected
editing Bool Is the cell currently being edited
updated Bool Was the cell recently updated
attributesRenderer func As for the main ReactDataSheet component
onMouseDown func Event handler important for cell selection behavior
onMouseOver func Event handler important for cell selection behavior
onDoubleClick func Event handler important for editing
onContextMenu func Event handler to launch default content-menu handling. You can safely ignore this handler if you want to provide your own content menu handling.
children Array or component The regular react props.children . You must render within your custom renderer or you won't your cell's data.

The valueViewer displays your cell's data with a custom component when in view mode. For example, you might show a "three star rating" component instead the number 3. You can specify a valueViewer for the entire sheet and/or for an individual cell.

React-DataSheet will supply these properties:

Option Type Description
value nœud The result of the valueRenderer function
row numéro The current row index
col numéro The current column index
cell Object The cell's raw data structure

The dataEditor displays your cell's data when in edit mode. You can can use any component you want, as long as you hook up the event handlers that constitute the contract between React-DataSheet and your editor. You can specify a dataEditor for the entire sheet and/or for an individual cell.


ArcGIS Noob Question: Attribute Table to Excel?

I have been trying to export an attribute table directly to Excel, but it seems to require lots of add-ons I don't now how to install.

Select all records in your attribute table, right click on that little grey box to the left of any row, select Copy Selected, then paste in a blank excel table. This is the fastest.

This is definitely the simplest and the method I generally use. Other options require creating temporary dbf or csv files. This method allows you to export out selected records quickly instead of the entire table.

Hey thanks, I knew you could do this in QGIS w/ a Ctrl-C Ctrl-V but I did not know the "copy selected" trick worked in Arc.

I did not know this. Thank you.

Alternatively just open the shpfile with the .dbf file extension in excel.

This will work but only if it is in shapefile format, if it is in a geodatabase then you cannot do this.

Learning time saving shit! Yay!

or use the "Table to Excel" tool under Conversion

You could use the export button as shown in the other answer posts, but in the drop down menu where you can choose the type, choose the "text" option (i'm not currently at work right now or iɽ post pics). Then after you name your table, instead of the .txt extension, put it as .csv and you'll be able to open it right up with excel.

open up the attribute table, click options, export table as dBASE, drag and drop the newly created file into excel. http://i.imgur.com/GfxTiHE.png

Try xtools pro, defnitely worth a download and install. It can make life a lot easier in arcmap. Not all of the features work with the free version but the export to excel does. You can pick which fields to be included and whether it exports all or only the ones selected. You then have the choice to save as an .xlsx or it can open the table directly into the application (not saved).


Voir la vidéo: la table attributaire. ArcGIS. arcgis الدرس 05 احتراف