Exportation TreeNode pour excel

J'essaie d'exporter une vue arborescente qui comporte plusieurs noeuds, nœuds enfants pour excel. la progression jusqu'à présent est le code ci-dessous.

Comment puis-je extraire tous les nœuds et les nœuds d'enfant pour séparer les colonnes?

ssortingng mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); using (StreamWriter sw = new StreamWriter(mydocpath + @"\MaterialList.csv")) foreach (TreeNode node in treeView1.Nodes) { sw.WriteLine(node); } 

Je crois que vous cherchez Inorder Tree Traversal? À less d'avoir mal compris quelque chose.

http://www.cplusplus.com/forum/beginner/131457/

 void Tree:: Inorder(Node* Root) { if(Root != NULL) { Inorder(Root->Left()); cout << Root->Key() << endl; Inorder(Root->Right()); } } 

Cette petite fonction utilise des appels récursifs pour imprimer tous les noeuds d'un tree dans l'ordre où ils apparaissent à partir de «root». Je pense que, avec ce sharepoint départ, vous devriez pouvoir tout comprendre assez facilement. Sinon, laissez-moi savoir (ou si ce n'est même pas ce que vous searchz). C'est un exemple c ++, mais il devrait toujours vous aider.

EDIT: pour suivre la profondeur de traversée ( Traverser un tree d'objects en c # ):

 printRoot(Node node) { printNode(node, 0); } printNode(Node node, int level) { printTitle(node.title) foreach (Node child in node.children) { printNode(child, level + 1); //<-- recursive } } 

ÉDIT 2: Étant donné que vous n'êtes toujours plus sûr de l'utilisation, je vais écrire le code.

 public void InorderTraversal(TreeNode root){ InorderTraversal(root, 0); } public void InorderTraversal(TreeNode root, int level){ //this is where you write to excel. You can also use 'level' to decide if you insert in column 1, 2, or 3 just by using a simple if statement like this: if(level == 0) sw.WriteLine(node, level.ToSsortingng()); foreach (TreeNode child in root.children){ //depending on how your tree is implemented this is probably either going to be root.children or root.next InorderTraversal(child, level + 1); } } 

Pour l'utiliser dans votre code:

 void main(void){ InorderTraversal(treeView1.Nodes); }