将WPF Treeview导出到Excel中

时间:2014-07-18 15:07:05

标签: c# wpf excel treeview

我的WPF应用程序中有一个TreeView。现在根据我的要求,我想导出为Excel格式,但我不知道如何从它开始。

这是我的TreeView Creation C#Code ..

private void TreeView_Loaded(object sender, RoutedEventArgs e)
    {
        // ... Create a TreeViewItem.

        item.Header = "Computer";
        item.ItemsSource = new string[] { "Monitor", "CPU", "Mouse" };

        // ... Create a second TreeViewItem.
        TreeViewItem item2 = new TreeViewItem();
        item2.Header = "Outfit";
        item2.ItemsSource = new string[] { "Pants", "Shirt", "Hat", "Socks" };

        // ... Get TreeView reference and add both items.
        var tree = sender as TreeView;
        tree.Items.Add(item);
        tree.Items.Add(item2);
    }

    private void TreeView_SelectedItemChanged(object sender,
        RoutedPropertyChangedEventArgs<object> e)
    {
        var tree = sender as TreeView;

        // ... Determine type of SelectedItem.
        if (tree.SelectedItem is TreeViewItem)
        {
            // ... Handle a TreeViewItem.
            var item = tree.SelectedItem as TreeViewItem;
            this.Title = "Selected header: " + item.Header.ToString();
        }
        else if (tree.SelectedItem is string)
        {
            // ... Handle a string.
            this.Title = "Selected: " + tree.SelectedItem.ToString();
        }
    }

请帮我把它导出到Excel中。

提前致谢..

1 个答案:

答案 0 :(得分:1)

正如您在other question中所提到的,在WPF中,我们将数据绑定到UI控件,因此在您的情况下,您应该有一个绑定到TreeView.ItemsSource property的集合属性数据。如果您这样做,那么您需要做的就是遍历该集合并直接从中填充您的Excel数据。

因此,您的第一个错误是尝试从TreeView事件处理程序填充TreeView_Loaded。我已经告诉过你需要做什么,所以我有点惊讶你完全忽略了我的建议并继续沿着错误的道路前进。 定义集合属性以将数据绑定到TreeView.ItemsSource属性 ...您还需要声明具有所需属性的自定义数据类型类,例如。一个集合属性将数据绑定到子节点的ItemsSource属性:

public ObservableCollection<YourClass> Items
{
    get { return items; }
    set { items = value; NotifyPropertyChanged("Items"); }
}

然后我们将数据绑定到TreeView.ItemsSource属性:

<TreeView ItemsSource="{Binding Items}" />

最后,我们需要声明一个HierarchicalDataTemplate来定义每个项目的外观:

<TreeView ItemsSource="{Binding Items}"> 
    <TreeView.ItemTemplate>     
        <HierarchicalDataTemplate ItemsSource="{Binding ItemsPropertyInYourClass}"> 
            <TextBlock Text="{Binding NameOfPropertyInYourClass}" />     
        </HierarchicalDataTemplate>     
    </TreeView.ItemTemplate>     
</TreeView> 

这就是您在TreeView中正确显示项目的方式...请参阅MSDN上的TreeView and HierarchicalDataTemplate, Step-by-Step页面以获取进一步的帮助。

现在您需要做的就是遍历您的集合以填充您的Excel数据。我现在不是直接浏览所有代码,而是指导您阅读在线教程,所以请查看matijabozicevic.com上的Export data to Excel using C#

您仍需要阅读MSDN上的Data Binding Overview‎页面,以获取有关数据绑定的进一步帮助。