0

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

组、列 1、列 2、列 3、列 4、列 5

示例(所有字符串)

"Beginning","1","Quiet","Some text","Some other text","c:\...\image.jpg"
"Beginning","2","Quiet","Some text2","Some other text2","c:\...\image2.jpg"
"Middle","3","Quiet","Some text3","Some other text3","c:\...\image3.jpg"
"Middle","4","Running","Some text4","Some other text4","c:\...\image4.jpg"

组是一个列表视图组。Column1是一个listviewitem,Column2是Column1的第一个子项,Column3是Column1的第二个子项,Column4是Column1的第三个子项,Column5是Column1的最后一个子项。

Group 和 Column2 不是唯一的,所有其他列都是唯一的。

什么是最有效的方法

  1. 读取具有该结构的 csv 文件列表
  2. 填充列表视图
  3. 写入 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);
...

作为依据。但是这种方法使自动化变得困难。特别是当有更多的组被重用时。所以我正在寻找一种通常可以完成的方法。

4

2 回答 2

0

这是您可以尝试的初学者,如果这对您有用,请报告。我将从一个 ListView First 开始,以便您了解事情的工作原理。

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);
}
于 2012-10-30T21:36:33.047 回答
0

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

最棒的是异常处理——如果行的格式是意外的,则会抛出 MalformedExceptions。

这里查看更多详细信息。

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

于 2012-10-30T21:49:23.060 回答