首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中根据列标题名读取CSV列值

在C#中根据列标题名读取CSV列值
EN

Stack Overflow用户
提问于 2022-09-07 11:16:01
回答 1查看 196关注 0票数 0

有人能告诉我如何从csv文件中读取列数据吗?此csv文件具有每个工作表的列标题和列值。

在我的WPF窗口中,我有两个列表框。第一个列表框(lst1)填充列标题名称。我希望在第一个列表框中加载第二个列表框(lst2),其中包含所选项的列值(列标题名称)。

下面是我在第一个列表框中加载列标题名称时使用的代码。

代码语言:javascript
复制
    public List<string> ColumnNameGenerator(string FilePath)
    {
        string firstLine = "";
        using (StreamReader reader = new StreamReader(FilePath))
        {
            firstLine = reader.ReadLine() ?? "";
        }
        return firstLine.Split(',').ToList();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        string path = "D:\\Tutorial\\ExcelDocs\\school.csv";
        lst1.ItemsSource = ColumnNameGenerator(path);            
    }

当我们在第一个列表框中选择一个标头值时,我试着获取列值。

代码语言:javascript
复制
    private void lst1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var csv = from line in lst1.SelectedItem as List<string>
                  select (line.Split(',')).ToArray();
        lst2.ItemsSource = csv;
    }

但这是行不通的。怎么做呢?

提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2022-09-07 16:48:36

我找到了解决这个问题的办法。我用CsvHelper来解决这个问题。

代码语言:javascript
复制
  private void lst1_SelectionChanged(object sender, 
                                    SelectionChangedEventArgs e)
    {
        lst2.Items.Clear();

        string columnheadername = lst1.SelectedItems[0].ToString();

        CsvConfiguration csvConfiguration = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            HasHeaderRecord = true,
            Delimiter = ","
        };

        CsvReader csv = new CsvReader(File.OpenText(path), csvConfiguration);
        csv.Read();
        csv.ReadHeader();

        while (csv.Read())
        {               
            var stringField = csv.GetField<string>(columnheadername);
            lst2.Items.Add(stringField);
        }            
    }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73634539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档