如何将网格视图的每个值写入文本文件?

时间:2016-08-30 09:51:21

标签: c# winforms text-files

我想将网格值写入文本文件的每一行。

网格如下。

enter image description here

我想在一行中用白色空格标签写出SensposX,SensPosY和SensPosZ的值,这样它应该跟随其余的12行。

我可以知道如何写这个吗?

1 个答案:

答案 0 :(得分:1)

选项1

要将DataGridView导出到文件,作为一个简单的选项,您可以使用GetClipboardContent方法:

grid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
grid.SelectAll();
var text = grid.GetClipboardContent().GetText();

然后您只需使用File.WriteAllText方法将内容保存到文件:

System.IO.File.WriteAllText(filePath, text);

注意

  • 您只能选择要导出的列或行。我使用SelectAll()导出整个网格。
  • 您可以使用GetText方法的签名对导出的文本进行更多控制。

选项2

您可以使用linq选择所需的单元格值并将其连接起来以创建DataGridView的文本表示形式:

var lines = new List<string>();
var headers = grid.Columns.Cast<DataGridViewColumn>()
                            .Where(c => c.Visible).Select(c => c.HeaderText);
lines.Add(string.Join("\t", headers));
var rows = grid.Rows.Cast<DataGridViewRow>()
                        .Select(r => string.Join("\t", r.Cells.Cast<DataGridViewCell>()
                        .Where(c => c.Visible).Select(c => c.FormattedValue)));
lines.AddRange(rows);
var text = string.Join(Environment.NewLine, lines);