2017-06-16 24 views
-1

我创建了如下图所示的Datagridview,并将第一列作为参考值。Datagridview:如果单元格值符合条件,则创建新的文本文件

1

我想所有的行根据一列值导出到文本文件。 每Level=0将创造新的文本文件,filename= Level 0 Partnumber

下面是我的代码,但是这个代码将保存在只有1个文本文件的所有数据。

SaveFileDialog sv = new SaveFileDialog(); 
sv.FileName = ""; 
sv.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; 
if (sv.ShowDialog() == DialogResult.OK) 
{ 
    TextWriter writer = new StreamWriter(sv.FileName); 
    writer.Write("Level\tPartnumber\tDescription"); 
    writer.WriteLine(""); 
    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
    { 
     for (int j = 0; j < dataGridView1.Columns.Count; j++) 
     { 
      writer.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "\t"); 
     } 
     writer.WriteLine(""); 
    } 
    writer.Close(); 
    MessageBox.Show("Data Exported"); 
} 

在此先感谢。

+0

嗯,你问用户与该'SaveFileDialog'一个文件名,然后你写的所有行与给定文件名的文件。这里没有惊喜。 – Waescher

+0

您的照片将创建多少个文件? –

+0

2将根据图片创建文本文件。 Item A.txt&Item B.txt。谢谢 – xFactor

回答

0

添加LINQ名字空间和尝试这个

List<product> prdList = new List<product>(); 
    private void SetValue() 
    { 
     product prd1 = new product 
     { 
      Level = 0, 
      PartNumber = "Item A", 
      Description = "Product" 
     }; 
     product prd2 = new product 
     { 
      Level = 0, 
      PartNumber = "Item b", 
      Description = "batry" 
     }; 
     product prd3 = new product 
     { 
      Level = 1, 
      PartNumber = "Item1", 
      Description = "Product" 
     }; 
     product prd4 = new product 
     { 
      Level = 1, 
      PartNumber = "Item2", 
      Description = "Product" 
     }; 
     product prd5 = new product 
     { 
      Level = 1, 
      PartNumber = "Item3", 
      Description = "Product" 
     }; 
     prdList.Add(prd1); 
     prdList.Add(prd2); 
     prdList.Add(prd3); 
     prdList.Add(prd4); 
     prdList.Add(prd5); 
    } 

    private void CreateTextFile() 
    { 
     var newPrdList = prdList.GroupBy(x => x.Level).ToList(); 

     foreach (var levels in newPrdList) 
     { 
      TextWriter writer = new StreamWriter("D:\\Level" + levels.FirstOrDefault().Level + ".txt"); 
      writer.Write("Level\tPartnumber\tDescription"); 
      foreach (var level in levels) 
      { 
       writer.WriteLine(""); 
       writer.Write(level.Level.ToString() + "\t"); 
       writer.Write(level.Description + "\t"); 
       writer.Write(level.PartNumber + "\t"); 
       writer.WriteLine(""); 
      } 
      writer.Close(); 
     } 
    } 
相关问题