如何将ListView内容保存到文本文件?

问题描述:

如何将ListView内容(包括ColumnHeaders)保存到文本文件?如何将ListView内容保存到文本文件?

谢谢。

在.NET中没有任何东西会为你做到这一点,你需要自己去做这件事。

无论什么事件都会触发您的保存:打开文件,遍历列表内容,将文本写入文件,然后关闭文件。收盘当然可以通过using来完成:

using (var tw = new StreamWriter(filename)) { 
    foreach (ListViewItem item in listView.Items) { 
    tw.WriteLine(item.Text); 
    } 
} 

如果要导出所有子项必须使用此代码:

StringBuilder sb; 

if (listView.Items.Count > 0) 
{ 
    // the actual data 
    foreach (ListViewItem lvi in listView.Items) 
    { 
     sb = new StringBuilder(); 

     foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems) 
     { 
      sb.Append(string.Format("{0}\t", listViewSubItem.Text)); 
     } 
     sw.WriteLine(sb.ToString()); 
    } 
    sw.WriteLine(); 
} 
+0

我该如何读取下一次启动应用程序时创建的填充ListView的文件? – 2016-08-21 18:12:08

这应该工作100%,我做这一个项目我的。 我知道这是4年太晚了,但在这里。

 private void export2File(ListView lv, string splitter) 
     { 
      string filename = ""; 
      SaveFileDialog sfd = new SaveFileDialog(); 

      sfd.Title = "SaveFileDialog Export2File"; 
      sfd.Filter = "Text File (.txt) | *.txt"; 

      if (sfd.ShowDialog() == DialogResult.OK) 
      { 
       filename = sfd.FileName.ToString(); 
       if (filename != "") 
       { 
        using (StreamWriter sw = new StreamWriter(filename)) 
        { 
         foreach (ListViewItem item in lv.Items) 
         { 
          sw.WriteLine("{0}{1}{2}", item.SubItems[0].Text, splitter, item.SubItems[1].Text); 
         } 
        } 
       } 
      } 
     } 
+0

我建议在每个子项目和最后一个中断之间添加一个制表符。如果有人使用从txt文件复制和粘贴excel,它会调出一个排序表到Excel中。而且,在大多数文本编辑器中,它会显示为格式。 – C4u 2014-10-24 08:50:32

+0

不必要...非常。所有这些工作都是针对2个子项目的2个变量进行格式化。不知道为什么有人会使用excel。大多数文本编辑器会格式化,除了记事本以外。 – 2014-10-24 20:26:01

+0

不知道?因为它是表中的数据。无法判断是否有必要,只要您不知道该工具中处理了哪种数据。 – C4u 2014-10-25 05:54:37