C# 用csv文件填充列表视图';内容包括组

C# 用csv文件填充列表视图';内容包括组,c#,listview,C#,Listview,因此,您在文本文件和列表视图中有一个csv列表。田地是 组,第1列,第2列,第3列,第4列,第5列 示例(所有字符串) 组必须是listviewgroup。第1列为listviewitem,第2列为第1列的第1子项,第3列为第1列的第2子项,第4列为第1列的第3子项,第5列为第1列的最后一子项 组和列2不是唯一的,所有其他列都是唯一的 最有效的方法是什么 读取具有该结构的csv文件列表 填充listview 写入csv文件 我尝试的是: ListViewGroup k = new ListVie

因此,您在文本文件和列表视图中有一个csv列表。田地是

组,第1列,第2列,第3列,第4列,第5列

示例(所有字符串)

组必须是listviewgroup。第1列为listviewitem,第2列为第1列的第1子项,第3列为第1列的第2子项,第4列为第1列的第3子项,第5列为第1列的最后一子项

组和列2不是唯一的,所有其他列都是唯一的

最有效的方法是什么

  • 读取具有该结构的csv文件列表
  • 填充listview
  • 写入csv文件
  • 我尝试的是:

    ListViewGroup k = new ListViewGroup("group1");
    ListViewGroup l = new ListViewGroup("group2");
    ListViewGroup a = new ListViewGroup("group3");
    listView1.Groups.AddRange(new ListViewGroup[] {a, k, l });
    ListViewItem item1 = new ListViewItem("column1_1", 0);
    item1.SubItems.Add("column2_1");
    item1.SubItems.Add("column3_1");
    item1.SubItems.Add("column4_1");
    item1.SubItems.Add("column5_1");
    item1.Group=k;
    listView1.Items.Add(item1);
    
    ListViewItem item2 = new ListViewItem("column1_2", 0);
    ...
    

    作为基础。但这种方法使自动化变得困难。尤其是当有更多的组被重用时。因此,我正在寻找一种正常的方法。

    这里有一些你可以尝试的东西,如果这对你有用,请向我汇报。 我将首先从一个列表视图开始,这样您就可以了解事物如何工作的要点

    FileStream fileStreamNew = File.Open("C:\\myCSVFile.csv", FileMode.Open, FileAccess.Read);
    StreamReader streamRead = new StreamReader(fileStreamNew);
    string strView = streamRead.ReadToEnd();
    streamRead.Close();
    fileStreamNew.Close();
    
    String[] strArray = strView.Split(new char[] { ',' });
    foreach (string strValue in strArray)
    {
       listView1.Items.Add(strValue);
    }
    

    在导入和导出到.csv(或任何带分隔符的文件)方面,在Microsoft.VisualBasic命名空间中有一个名为TextFieldParser的类(有点令人惊讶)。您只需将它指向文件,说出分隔符是什么,然后在调用ReadLine()时返回一个字符串[]。您还可以定义注释标记,确保只导入所需的数据

    最棒的是异常处理——如果行的格式出乎意料,就会抛出错误的dexceptions

    查看更多详细信息


    我已经用了很多次了,它从来没有让我失望过!也使您的代码更易于阅读。

    您尝试过什么吗?请在这里发布。您可以发布几行CSV文件吗?它必须是一个列表视图,您可以将值读入。。?您能将它们读入数据网格吗?与listview相比有什么优势?取决于加载listview后要执行的操作。。如果您希望以表/网格格式查看数据,那么DataGrid可以工作。但我不确定在填充ListView后,您想要对数据做什么
    FileStream fileStreamNew = File.Open("C:\\myCSVFile.csv", FileMode.Open, FileAccess.Read);
    StreamReader streamRead = new StreamReader(fileStreamNew);
    string strView = streamRead.ReadToEnd();
    streamRead.Close();
    fileStreamNew.Close();
    
    String[] strArray = strView.Split(new char[] { ',' });
    foreach (string strValue in strArray)
    {
       listView1.Items.Add(strValue);
    }