0

したがって、テキストファイルとリストビューに csv-list があります。フィールドは

グループ、列 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 はリストビュー項目、Column2 は Column1 の 1 番目のサブ項目、Column3 は Column1 の 2 番目のサブ項目、Column4 は Column1 の 3 番目のサブ項目、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

.csv (または任意の区切りファイル) へのインポートとエクスポートに関しては、Microsoft.VisualBasic 名前空間に (やや驚くべきことに) TextFieldParser という優れたクラスがあります。ファイルを指すだけで、区切り文字が何であるかを指定すると、ReadLine() を呼び出したときに string[] が返されます。必要なデータのみをインポートしていることを確認するコメント タグを定義することもできます。

優れているのは例外処理です。行が予期しない形式の場合、MalformedExceptions がスローされます。

詳しくはこちらをご覧ください。

私はそれを何度も使用しましたが、決してがっかりすることはありません! また、コードが読みやすくなります。

于 2012-10-30T21:49:23.060 に答える
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 に答える