如何在 C# 中不重复地导出列 header?

How to export column header without duplication in C#?

我想请您帮忙进行 C# 编程。我正在制作一个应用程序,其功能之一是将图形从数据网格视图导出到 csv 文件。我想在每次保存时将这些数字添加到现有文件中。问题是 header 列也总是被添加。如何导出数字而不 header 重复? 这是我的代码:

        StreamWriter sw = new StreamWriter("table_1.csv", true, Encoding.UTF8);
        // Column headers:
        for (int i = 0; i < dgv_data.ColumnCount; i++)
        {
            sw.Write(dgv_data.Columns[i].Name + ";");
        }
        sw.WriteLine();

        // rows:
        for (r = 0; r < dgv_data.SelectedRows.Count; r++)
        {
            for (int c = 0; c < dgv_data.ColumnCount; c++)
            {
                sw.Write(dgv_data.SelectedRows[r].Cells[c].Value.ToString() + ";");
            }
            sw.WriteLine();
        }
        sw.Close();
        

创建文件前检查文件是否存在StreamWriter:

bool fileExists = File.Exists("table_1.csv");

您必须在 StreamWriter 之前检查,因为如果文件不存在,它将创建该文件。

然后,如果文件已经存在,则跳过输出列headers的代码,如下例所示:

string outputFilename = "table_1.csv";
bool fileExists = File.Exists(outputFilename);

using (StreamWriter sw = new StreamWriter(outputFilename, true, Encoding.UTF8))
{
    // Only write column headers if the file is new
    if (!fileExists)
    {
        // Column headers:
        for (int i = 0; i < dgv_data.ColumnCount; i++)
        {
            sw.Write(dgv_data.Columns[i].Name + ";");
        }
        sw.WriteLine();
    }

    // rows:
    for (r = 0; r < dgv_data.SelectedRows.Count; r++)
    {
        for (int c = 0; c < dgv_data.ColumnCount; c++)
        {
            sw.Write(dgv_data.SelectedRows[r].Cells[c].Value.ToString() + ";");
        }
        sw.WriteLine();
    }
    sw.Close();
}