Exporter la table de l'arborescence vers CSV avec mise en forme

Praveech

J'ai une arborescence dans ma table html qui est imbriquée à plusieurs niveaux

 Parent 
    --- Child1
           ----Parent
                   ---- Child
   - Child

SampleJSON:

J'ai besoin d'exporter les données ci-dessus au format CSV avec une arborescence pour le Namechamp, j'ai joint l'image CSV de la façon dont ces données doivent être extraites avec les en-têtes de colonne. par exemple, si j'ai 5 niveaux de profondeur dans le json, je veux les 5 premières colonnes comme nom et la 6ème colonne comme statut et 7ème colonne Pays toutes les données sont présentes en ligne avec l'en-tête de colonne

[! [résultat attendu] [1]] [1]

[CSV final à exporter] [1]

Ggorlen

Vous pouvez utiliser la récursivité pour déterminer la profondeur maximale de la structure, puis utiliser une deuxième fonction récursive pour créer votre résultat, en remplissant chaque ligne avec des cellules délimitées par des virgules en cours de route. Joindre le tableau avec des retours à la ligne produit une chaîne CSV.

Cela dit, la structure que vous avez présentée n'est pas un arbre réel ni un objet "JSON" car il peut y avoir plusieurs racines dans le tableau externe. Si vous passez un {id: 0, name: "", children: [ ... ]}élément en tant qu'élément (racine) le plus à l'extérieur, vous avez affaire à un arbre réel et vous devrez modifier légèrement les fonctions présentées ici pour travailler dessus (travailler sur le nœud actuel, puis récurer sur les enfants si existant).

J'ai également ajouté des citations autour de chaque champ au cas où vous auriez des virgules dans vos données à un moment donné.

const data = [ { "id": "692953339134475108", "entityID": "5000231121", "Name": "*Test1", "status": "Active", "date": "-", "country": "IND", "children": [ { "id": "699554426559363304", "parentId": "692953339134475108", "Name": "Testing 1", "entityID": "1416474126", "hierarchyId": "699154426559445604", "status": "Active", "date": "-", "country": "IND" }, { "id": "697253339134484008", "parentId": "692953339134475108", "Name": "*Test 2", "entityID": "1398417635", "hierarchyId": "697553339134529808", "status": "Active", "date": "-", "country": "IND" }, { "id": "696253339134488908", "parentId": "692953339134475108", "Name": "Not Available", "entityID": "Not Available", "hierarchyId": "694653339134506008", "status": "Not Available", "date": "Not Available", "country": "Not Available" },{ "id": "691453339134493608", "parentId": "692953339134475108", "Name": "*Test 3", "entityID": "1387487096", "hierarchyId": "691653339134511008", "status": "Active", "date": "-", "country": "IND" }, { "id": "697053339134483308", "parentId": "692953339134475108", "Name": "*TEst 5", "entityID": "1396529024", "hierarchyId": "694053339134516108", "status": "Active", "date": "-", "country": "IND" }, { "id": "698653339134491308", "parentId": "692953339134475108", "Name": "*test 6", "entityID": "1396474242", "hierarchyId": "695553339134503808", "status": "Active", "date": "-", "country": "IND" }, { "id": "692053339134490708", "parentId": "692953339134475108", "Name": "*test 7", "entityID": "1396505159", "hierarchyId": "699853339134497808", "status": "Active", "date": "-", "country": "IND" }, { "id": "691054426559395204", "parentId": "692953339134475108", "Name": "*atest 8", "entityID": "1416469729", "hierarchyId": "696954426559401304", "status": "Active", "date": "-", "country": "IND" }, { "id": "696353339134489808", "parentId": "692953339134475108", "Name": "*TWSTTTT", "entityID": "1396474493", "hierarchyId": "693853339134524908", "status": "Active", "date": "-", "country": "IND" }, 
{ "id": "697454426559390004", "parentId": "692953339134475108", "Name": "*test9", "entityID": "1376584880", "hierarchyId": "698054426559423304", "status": "Active", "date": "-", "country": "IND", "children": [ { "id": "698653991889575501", "parentId": "697454426559390004", "directPercent": "10", "totalPercent": "50", "Name": "Not Available", "entityID": "Not Available", "hierarchyId": "694453991889580001", "status": "Not Available", "date": "Not Available", "country": "Not Available" } ] }, { "id": "693653339134492808", "parentId": "692953339134475108", "Name": "Not Available", "entityID": "1376584880", "hierarchyId": "691153339134501508", "status": "Not Available", "date": "Not Available", "country": "Not Available" }, { "id": "696154426559394204", "parentId": "692953339134475108", "Name": "*THE TEST", "entityID": "1416583295", "hierarchyId": "698854426559467404", "status": "Active", "date": "-", "country": "IND" }, { "id": "692153339134481408", "parentId": "692953339134475108", "Name": "*TESTT", "entityID": "1396477303", "hierarchyId": "691053339134522808", "status": "Active", "date": "-", "country": "IND" }, { "id": "694553339134485108", "parentId": "692953339134475108", "Name": "*TEDTTTETETE", "entityID": "1392671953", "hierarchyId": "698853339134513508", "status": "Active", "date": "-", "country": "IND" }, { "id": "696953339134492208", "parentId": "692953339134475108", "Name": "*TESSRTTT", "entityID": "1387487096", "hierarchyId": "696153339134518708", "status": "Active", "date": "-", "country": "IND" } ] } ];

const depth = (a, d=0) => {
  let deepest = d;
  
  for (const node of a) {
    if (node.children) {
      deepest = Math.max(deepest, depth(node.children, d + 1));
    }
  }
  
  return deepest;
};

const dataToCSV = (a, res, maxDepth, depth=0) => {
  for (const node of a) {
    const row = Array(maxDepth + 1).fill("")
      .concat([node.status, node.country])
    ;
    row[depth] = node.Name;
    res.push(row);
    
    if (node.children) {
      dataToCSV(node.children, res, maxDepth, 1 + depth);
    }
  }
  
  return res;
};

const body = dataToCSV(data, [], depth(data));
const headers = Array(body[0].length)
  .fill("\"Name\"")
  .concat(["\"status\"", "\"Country\""])
  .slice(2)
  .join(",") + "\n"
;
const csv = headers + body.map(
  e => e.map(cell => `"${cell}"`).join(",")
).join("\n");

console.log(csv);

Chaîne CSV de résultat dans l'aperçu de la feuille de calcul:

tableur

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive