닷넷/WinForms

C# 데이터그리드뷰 CSV 파일로 저장하기

FreeBear 2019. 4. 14. 21:14
반응형

private void Save_Csv(string fileName, DataGridView dgv, bool header)
{
    string delimiter = "`";  // 구분자
    FileStream fs = new FileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
    StreamWriter csvExport = new StreamWriter(fs, System.Text.Encoding.UTF8);

    if (dgv.Rows.Count == 0) return;

    // 헤더정보 출력
    if (header)
    {
        for (int i = 0; i < dgv.Columns.Count; i++)
        {
            csvExport.Write(dgv.Columns[i].HeaderText);
            if (i != dgv.Columns.Count - 1)
            {
                csvExport.Write(delimiter);
            }
        }
    }

    csvExport.Write(csvExport.NewLine); // add new line

    // 데이터 출력
    foreach (DataGridViewRow row in dgv.Rows)
    {
        if (!row.IsNewRow)
        {
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                csvExport.Write(row.Cells[i].Value);
                if (i != dgv.Columns.Count - 1)
                {
                    csvExport.Write(delimiter);
                }
            }
            csvExport.Write(csvExport.NewLine); 
        }
    }

    csvExport.Flush(); 
    csvExport.Close();
    fs.Close();
    MessageBox.Show("CSV파일 저장 완료!");
}

반응형