我为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("");
}
答案 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();
}
已解决:)