CSV到ListView

时间:2014-06-13 13:31:13

标签: c# listview csv

我正在尝试将我的CSV文件导出到ListView。

ListView看起来像这样:

http://screenshooter.net/7827870/vrwwokd

我设法导出csv文件,但它将所有内容放在“名称”列中。

private void toolStripButton1_Click(object sender, EventArgs e)
{


    using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
        try
        {
            openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            openFileDialog1.DefaultExt = "csv";
            openFileDialog1.Title = "Open file";
            openFileDialog1.Filter = "CSV (*.csv)|*.csv";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                FileStream srcFS;
                srcFS = new FileStream(openFileDialog1.FileName, FileMode.Open);
                StreamReader srcSR = new StreamReader(srcFS,System.Text.Encoding.Default);
                do
                {
                  string ins = srcSR.ReadLine();

                  ListViewItem lvi = new ListViewItem();
                  lvi.SubItems.Add(ins);

                  if (ins != null) listView1.Items.Add(lvi);
                  else break;
                } while (true);
                srcSR.Close();
            }
        }
        catch (Exception errorMsg)
        {
            MessageBox.Show(errorMsg.Message,"Error reading a file",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }

} 

任何人都有线索? :)

现在看起来如何:

        using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
    try
    {
        openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        openFileDialog1.DefaultExt = "csv";
        openFileDialog1.Title = "Open file";
        openFileDialog1.Filter = "CSV (*.csv)|*.csv";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            FileStream srcFS;
            srcFS = new FileStream(openFileDialog1.FileName, FileMode.Open);
            StreamReader srcSR = new StreamReader(srcFS,System.Text.Encoding.Default);
            do
            {
              string ins = srcSR.ReadLine();
              string[] columns = ins.Split(',');

              ListViewItem lvi = new ListViewItem(columns[0]);

              lvi.SubItems.Add(ins);

              for (int i = 1; i < columns.Count(); i++)
              {
                  lvi.SubItems.Add(columns[i]);
              }

              listView1.Items.Add(lvi);

            } while (true);
            srcSR.Close();
        }
    }
    catch (Exception errorMsg)
    {
        MessageBox.Show(errorMsg.Message,"Error reading a file",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }

1 个答案:

答案 0 :(得分:1)

此时您将整行添加为listviewitem。 首先,您需要将行拆分为列:

string[] columns = ins.Split(';');

然后使用第一列创建listviewitem。

ListViewItem lvi = new ListViewItem(columns[0]);

然后遍历剩下的并为每列添加一个子项:

for (int i = 1; i< columns.Count(); i++)
{
    lvi.SubItems.Add(columns[i]);
}

最后将listviewitem添加到listview

listView1.Items.Add(lvi);