TreeNode导出为Excel
我正试图导出一个treeview有几个节点,子节点要优秀。 目前的进展是下面的代码。
我怎样才能提取所有的节点和孩子节点到独立的列?
string mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); using (StreamWriter sw = new StreamWriter(mydocpath + @"\MaterialList.csv")) foreach (TreeNode node in treeView1.Nodes) { sw.WriteLine(node); }
我相信你正在寻找Inorder Tree Traversal? 除非我误解了一些东西。
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()); } }
这个小函数使用recursion调用按照从“root”开始的顺序打印出树的所有节点。 我认为,从这个出发点来看,你应该能够相当容易地把它全部弄清楚。 如果没有,请让我知道(或者如果这不是你要找的东西)。 这是一个C ++的例子,但它应该仍然帮助你。
编辑:跟踪遍历深度( 遍历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 } }
编辑2:由于你仍然不确定如何使用这个我会写出代码。
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.ToString()); 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); } }
要在你的代码中使用这个:
void main(void){ InorderTraversal(treeView1.Nodes); }
- 使用COM Interop复制Excel工作表失去单元格颜色
- Excel / Visual Studio / C#。 如何更改单元格的显示名称,但保留公式
- 将类属性映射到Excel / Spreadsheet列名的问题(使用LinqToExcel库时)
- Excel单元格值由OLEDB提供程序截断
- 想要在桌面或任何位置看到输出“data.csv”
- 无法使用System.Data.OleDb.OleDbConnection打开Excel文件
- 运行时错误“429”activex组件不能创build对象
- TFS没有findOffice程序集
- 需要将Excel工作表转换为文本(制表符分隔)在MS Excel 2007编程方式使用C#