我可以在DataGridView中选择一行并将其导出到一个名为DataGridView列的.txt文件
目前我有一个按钮将所有数据导出到.txt gridview,这里是代码
private void button2_Click(object sender, EventArgs e)
{
if (!Directory.Exists(@"D:\Carpeta"))
{
Directory.CreateDirectory(@"D:\Carpeta");
}
TextWriter sw = new StreamWriter(@"D:\Carpeta\Archivo.txt");
int rowcount = TablaDatos.Rows.Count;
for(int i = 0; i < rowcount -1; i++)
{
sw.WriteLine(TablaDatos.Rows[i].Cells[0].Value.ToString()+"\t"
+TablaDatos.Rows[i].Cells[1].Value.ToString()+"\t"
+TablaDatos.Rows[i].Cells[2].Value.ToString()+"\t"
+TablaDatos.Rows[i].Cells[3].Value.ToString()+"\t");
}
sw.Close();
MessageBox.Show("Datos Exportados correctamente");
}
我需要逐行导出,为每一行创建一个txt而不是整个DataGridView
答案 0 :(得分:0)
你去吧。
private void button2_Click(object sender, EventArgs e) {
if (!Directory.Exists(@"D:\Carpeta"))
Directory.CreateDirectory(@"D:\Carpeta");
for (int i = 0; i < TablaDatos.RowCount; ++i) {
var line = string.Join("\t", TablaDatos.Rows[i].Cells.Cast<DataGridViewCell>());
File.WriteAllText(@"D:\Carpeta\" + $"Archivo-row-{i}.csv", line);
}
MessageBox.Show("Datos Exportados correctamente");
}
答案 1 :(得分:0)
您可以使用以下任一选项:
选项1
将网格的MultiSelect
属性设置为false
,然后选择所需的行,然后您可以使用DataGridView.GetClipboardContent
。此方法检索表示所选单元格内容的格式化值,以便复制到剪贴板。结果以制表符分隔:
grid.MultiSelect = false;
grid.Rows[i].Selected = true;
grid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
var text = grid.GetClipboardContent().GetText();
选项2
您可以通过加入每个单元格的格式化值来获取索引i
处的行的文本表示形式。结果可以由您需要的任何字符分隔:
var text = string.Join("\t", grid.Rows[i].Cells.Cast<DataGridViewCell>()
.Where(x=> x.Visible).Select(x=> x.FormattedValue));
将文字保存到文件
您可以使用File.WriteAllText
方法:
System.IO.File.WriteAllText(filePath, text);