【问题标题】:Export WPF Treeview into Excel将 WPF 树视图导出到 Excel
【发布时间】:2014-07-18 23:32:21
【问题描述】:

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

这是我的 TreeView 创建 C# 代码..

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 中。

提前谢谢..

【问题讨论】:

  • 可能不是您想要的,但 Excel 确实接受 .csv,这会容易得多
  • .@DanielWard 好的,如果是 CSV 我也不知道。请指导我
  • .csv 的格式是每一行用换行符分隔,一行中的每个值用逗号分隔(在纯文本文件中)。第一行将是您的标题值。
  • @DanielWard 先生,我对技术很陌生。WPF treeView 和 CSV 对我来说都是新的。如果你能指导我参考我的代码。我将不胜感激

标签: c# wpf excel treeview


【解决方案1】:

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

所以您的第一个错误是尝试从TreeView_Loaded 事件处理程序填充您的TreeView。我已经告诉你你需要做什么,所以我有点惊讶你完全无视我的建议并继续沿着错误的道路前进。 定义一个集合属性以将数据绑定到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‎ 页面,以获得有关数据绑定的进一步帮助。

【讨论】:

  • 对不起,先生。现在我正在尝试一步一步来..在 get { return items; 中添加什么; } 设置 { 项目 = 价值; NotifyPropertyChanged("项目"); }
  • 如果你看不懂,那你真的没有任何目的在这个网站上提问……它是为专业开发者准备的,是为那些不懂的人准备的了解编程的绝对基础知识。您可以在线找到教程来帮助您学习……这不是 Stack Overflow 的用途。我想知道当我输入它时你是否明白。
  • 对不起先生,我伤害了你...我没有受伤,但也许你应该阅读 Stack Overflow Help Center 以了解谁可以使用这个网站。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多