C# 删除txt文件中的最后一行
我为datagridview编写了一个foreach循环,将所有行写入txt文件。 我有一个问题,因为它在末尾添加了两个空行,因为在添加/读取到datagrid视图后,一行充满了空单元格。 有没有办法省略最后一行或在txt中删除它C# 删除txt文件中的最后一行,c#,datagridview,C#,Datagridview,我为datagridview编写了一个foreach循环,将所有行写入txt文件。 我有一个问题,因为它在末尾添加了两个空行,因为在添加/读取到datagrid视图后,一行充满了空单元格。 有没有办法省略最后一行或在txt中删除它 foreach (DataGridViewRow item in this.DB.Rows) { foreach (DataGridViewCell item2 in item.Cells) { if(item2.Value !=
foreach (DataGridViewRow item in this.DB.Rows)
{
foreach (DataGridViewCell item2 in item.Cells)
{
if(item2.Value != null)
filewrite.Write(item2.Value.ToString() + " ");
}
filewrite.WriteLine("");
}
您可以实现以下目标:
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("");
}
for(int i=0;i
您可以使用确保只有在单元格中有内容时才向文件写入,例如
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);
以防您的数据中可能有其他空行
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("");
}
}
private void tofile\单击(对象发送者,事件参数e)
{
string file=“database.txt”;
StreamWriter文件写入;
filewrite=新的StreamWriter(文件);
int rcount=DB.Rows.Count;
for(int i=0;i
已解决:)不会像这样工作。item2.Value不是字符串,item2.Value.ToString()不起作用neither@user3658127我猜它不起作用,因为您执行
filewrite.WriteLine(“”)代码>行。@user3658127已为ToString
更新。如果您是说检查不起作用,那么很明显是因为item2.Value
包含某些内容。如果您的意思是最后仍然有一个空行…是的,您会这样做,因为在循环之后有filewrite.WriteLine(“”
)。您的问题是“如何停止2个空行”-此代码将阻止空行被输出,但不会阻止结尾的空行,因为您似乎是故意这样做的。我在阅读方法中正确处理了1个空行,需要删除第二个空行,已经解决了:)我的问题没有涉及最后一行,我在Demand上使用了它。我不知道为什么它仍然说item2.Value是无效参数
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();
}