簡體   English   中英

將DataGridView導出到帶有標題的文本文件

[英]Export DataGridView to text file with header

我想將DataGridView導出到文本文件。 我寫這段代碼。 它工作正常,但我也想將列標題寫入文本文件。

SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Text File|*.txt";
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
    return;
StringBuilder builder = new StringBuilder();
int rowcount = dgvSum.Rows.Count;
int columncount = dgvSum.Columns.Count;

for (int i = 0; i < rowcount - 1; i++)
{
    List<string> cols = new List<string>();
    for (int j = 0; j < columncount - 1; j++)
    {
        cols.Add(dgvSum.Rows[i].Cells[j].Value.ToString());
    }
    builder.AppendLine(string.Join("\t", cols.ToArray()));
}
System.IO.File.WriteAllText(dialog.FileName, builder.ToString());
MessageBox.Show(@"Text file was created.");

我會使用內置功能( GetClipboardContent()方法)

SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Text File|*.txt";
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
    return;

// setup for export
dgvSum.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
dgvSum.SelectAll();
// hiding row headers to avoid extra \t in exported text
var rowHeaders = dgvSum.RowHeadersVisible;
dgvSum.RowHeadersVisible = false;

// ! creating text from grid values
string content = dgvSum.GetClipboardContent().GetText();

// restoring grid state
dgvSum.ClearSelection();
dgvSum.RowHeadersVisible = rowHeaders;

System.IO.File.WriteAllText(dialog.FileName, content);
MessageBox.Show(@"Text file was created.");

所以你需要在第一個for循環之前使用這一行:

List<string> headerCols = new List<string>();
for (int j = 0; j < columncount - 1; j++)
{
    headerCols.Add(dgvSum.Columns[j].HeaderText);
}
builder.AppendLine(string.Join("\t", headerCols));

for (int i = 0; i < rowcount - 1; i++)
{
    ....
    ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM