删除txt文件中的最后一行

时间:2014-06-11 09:11:48

标签: c# datagridview

我为datagridview编写了一个foreach循环,将所有行写入txt文件。 我有一个问题,因为它在末尾添加了2个空行,因为在添加/读取数据网格视图后,1行充满了空单元格。 有没有办法省略最后一行或在txt中删除它?

foreach (DataGridViewRow item in this.DB.Rows)
{
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(item2.Value != null)
        filewrite.Write(item2.Value.ToString() + " ");
    }
    filewrite.WriteLine("");
}

4 个答案:

答案 0 :(得分:1)

你可以像下面这样实现:

for(int i = 0; i< this.DB.Rows.Count-1; i++)
{
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(item2.Value != null)
            filewrite.Write(item2.Value.ToString() + " ");
    }

    filewrite.WriteLine("");
}

答案 1 :(得分:1)

如果单元格中有内容,您可以使用String.IsNullOrWhiteSpace确保只写出文件。

var cellValue = item2.Value.ToString();
if (!String.IsNullOrWhitespace(cellValue)) {
    filewrite.Write(cellValue + " ");
}

使用LINQ

实际上可以很容易地做到这一点
var rows = this.DB.Rows.Select(r => String.Join(" ", r.Cells.Select(c => c.Value)))
                       .Where(x => !String.IsNullOrWhiteSpace((string)x));

File.WriteAllLines("database.txt", rows);

答案 2 :(得分:0)

如果您的数据中可能有其他空行。

foreach (DataGridViewRow item in this.DB.Rows)
{
    var printRow = false;
    foreach (DataGridViewCell item2 in item.Cells)
    {   
        if(!String.IsNullOrWhitespace(item2.Value.ToString()))
        {
            printRow = true;
            filewrite.Write(item2.Value.ToString() + " ");
        }
    }
    if (printRow)
    {
        filewrite.WriteLine("");
    }
}

答案 3 :(得分:0)

private void tofile_Click(object sender, EventArgs e)
{
    string file = "database.txt";
    StreamWriter filewrite;
    filewrite = new StreamWriter(file);
    int rcount = DB.Rows.Count;

    for(int i = 0; i < this.DB.Rows.Count - 1; i++)
    {
        foreach (DataGridViewCell item2 in this.DB.Rows[i].Cells)
        {   
            if(item2.Value != null)
                filewrite.Write(item2.Value.ToString() + " ");
        }

        filewrite.WriteLine("");
    }

    filewrite.Close();
}

已解决:)