Aller au contenu

Exporter/Importer Données d'Objet par un fichier CSV


bonuscad

Messages recommandés

Bonjour

 

Suite à une demande d'Alexender (personne Russe) sur un forum de Map, j'ai été amené a développer ceci:

 

All_OD2CSV Exporte TOUTES les OD du dessin dans un ou plusieurs fichiers CSV (1 fichier par table)

 

Ces fichiers sont facilement éditable avec un tableur, vous pouvez donc effectuer (ou pas) des modifications/suppressions/ajouts dans celui-ci.

Il est IMPÉRATIF de ne pas toucher à la 1ère colonne ET dernière colonne, les autres peuvent être modifiées ou en créer de nouvelles, l'essentiel est d'être cohérent dans les données introduites ou modifiées.

 

Penser à modifier la ligne 3 si vous voulez changer le type de données (Character, Integer, Real, Point), de même vous pouvez changer le nom de la table à la ligne 1 (l'ancienne devra être supprimée manuellement avant l'import)

A la ligne 2 Le nom des champs peut être aussi modifié ou insérer une nouvelle colonne entre la 1ere et dernière avec un nouveau champ.

 

CSV2OD Importe simplement le fichier CSV de la table sélectionnée. Il ne s'occupe pas de la cohérence des données, donc si données ont été modifiées en dépits du bon sens la routine va certainement échouer, mais si tout est correct il remplacera toutes les données.

 

En résumé vous pourrez faire beaucoup de choses avec le tableur: croiser les données pour en créer de nouvelles par exemple, mais connaître la structure des données de Map est quelque peu indispensable.

 

Les routines s’occupe aussi des données empilées (plusieurs enregistrements) si elles existent.

Pour donner un ordre d'idée: Pour un fichier de 8.5 Mo avec 4 tables en moyenne par objet avec parfois des données empilées le traitement a pris environ 45s, donc soyez patient si ça mouline.

 

Si mes explications sont insuffisantes, relancez moi!

All_OD2CSV.lsp

CSV2OD.lsp

Modifié par bonuscad
  • Like 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut Bonus,

pour moi c'est bien dommage de faire ce travail avec du csv.

même si le Russe te l'a demandé, tu ferais mieux de passer ton travail sous excel, ou pour mon cas, sous msexcel XML 2003,

pour moi l'idéal des deux mondes ...

Lire et écrire des variables dans des fichiers msExcel.Xml

le csv, c'est une source sans fin de problèmes, car de nombreux modèles de données (bien pourris, et pourtant concoctés par de grand "Géomaticiens") utilisent des nombres entiers sous forme de chaine.

Si comme moi, tu utilises l'handle comme clef pour lire et écrire, c'est vite l'horreur,

avec une conversion numérique des handle entièrement numériques, donc en fait,

tu ne peux pas éditer tes données avec excel.

et puis il y a toujours le problème, en préférence "france", des virgules comme séparateur décimales ET comme séparateur de colonne !

a+, gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

J'avais déjà ajouté une fonction d'export/import des OD en format TXT séparateur tabulation exactement sur le principe ATTOUT/ATTIN.

Le Handle en 1ère colonne ajoute un apostrophe comme 1er caractère pour éviter le remplacement malencontreux par excel des info Hexa.

La seule contrainte c'est que si un champ contient une virgule, Excel ajoute automatiquement des guillemets en début et fin de valeur quand tu ré-enregistres en TXT, mais sinon tout fonctionne pas trop mal.

 

Je ne connaissais pas le format msExcelXML 2003, mais ça pourrait être une solution de substitution.

 

Olivier

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

All_OD2CSV a été retouché/affiné, la stucture du fichier a un peu changé pour plus de simplicité.

Le Nom de la table est seulement référencé dans le nom du fichier "nom du fichier-dwg" + "&" + "nom de la table d'objet" ".csv"

Si plusieurs tables ont été sélectionnées, il y aura autant de fichiers créés que de tables.

Dans ce fichier la 1ere ligne contient le nom des champs d'objet, comme précédemment la modification/ajout/suppression peut se faire sur n'importe quelle colonne, SAUF la 1ère (HANDLE), il n'y a plus la colonne du nombre d'enregistrements, les n-record sont géré automatiquement. La ligne du type de données ne figure plus (caractère, entier réel), ils sont déterminé automatiquement.

 

CSV2OD a été également revu pour la relecture des fichiers produits par All_OD2CSV, mais aussi pour la lecture d'un fichier .csv généré autrement (donc sans "&" dans le nom du fichier, dans ce cas attention à la longueur du nom du fichier qui deviendra le nom de la table).

Bien sur la 1 ère colonne des HANDLE doit être définies et valide pour le dessin ou l'importation est faite.

L'intitulé HANDLE de la 1ère colonne n'est pas obligatoire, il faut alors que la ligne débute par un séparateur, puis le nom des champs.

Le Handle peut être sous la forme par exemple '16D42 ou "16D42", de même les valeurs de champs peuvent aussi contenir des guillemets tel que "Type" ou "2020", dans le cas contraire le type de données sera déterminé par la lecture de la 1ère ligne de données.

Donc toute les autres lignes devront être en cohérence par rapport à cette 1ère ligne.

 

NOUVEAUTÉ: CSV2OD peut lire aussi un fichier issu de ATTOUT pour attribuer une table de données avec les attributs de blocs (attention à la longueur du nom de fichier généré par ATTOUT, renommer si besoin)

Si le choix de l'option de lecture n'est pas ".csv" mais ".txt" (fichier résultant de ATTOUT), il vous sera proposé de forcé les valeurs en mode caractère.

Cela permet que si des valeurs d'attributs ne sont pas constantes de les transmettre correctement à la table. Exemple un attribut ALTI est de 65.23 dans une insertion, mais dans une autre insertion vous avez "Fil d'eau 87.32".

Si vous ête sur de la constance des attributs et que vous ne forcez pas la lecture, vous pouvez obtenir des champs de type de valeur déterminé automatiquement.

 

Bien qu'il ne répondra pas surement à toutes les exigences, je ne pense pas aller au-delà dans le développement. Car plus il y a d'exigence, plus ça complexifie l'écriture du code.

Les fichiers ont été mis à jour dans le post initial.

 

  • Like 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité