공학속으로/C#

c# DataGridView 내용을 csv 파일로 저장하기

더월드 2021. 12. 21.

 

 

우선 윈폼으로 버튼을 한 개 만든 후, 버튼 클릭시 csv 파일로 저장하는 프로그램을 만들어 보겠습니다.

 

save_button_Click 함수는 버튼 클릭시 ExportTOCSV() 함수를 실행시키는 함수입니다.

 

ExportTOCSV() 함수는 파일 다이얼로그라고 보시면 됩니다.

-SaveFileDialog 함수를 불러와서 Save_csv 함수로 전달하는 함수입니다.

//--------------------------
// 목록저장 버튼
//--------------------------
private void save_button_Click(object sender, EventArgs e)
{
    ExportToCSV();
}

private void ExportToCSV()
{
    SaveFileDialog saveFileDialog = GetCsvSave();
    if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        Save_Csv(saveFileDialog.FileName, dataGridView1, true); // dataGridView에 데이터를 세팅하는 메서드를 호출
    }
    
}

 

 

 SaveFileDialog 함수 (다이얼로그 기본 정보 정의)

private SaveFileDialog GetCsvSave()
{
    //Getting the location and file name of the excel to save from user.
    SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.CheckPathExists = true;
    saveDialog.AddExtension = true;
    saveDialog.ValidateNames = true;

    string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
    string filepath = Path.GetDirectoryName(path);


    saveDialog.InitialDirectory = filepath;// Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

    saveDialog.DefaultExt = ".csv";
    saveDialog.Filter = "csv (*.csv) | *.csv";
    saveDialog.FileName = "export".ToString();

    return saveDialog;
}

 

 

○ Save_csv(string fileName, DataGridView dgv, bool header) 함수

실질적으로 datagridview의 데이터를 가져와서 csvExport.Write함수를 이용해 csv파일에 저장하는 처리를 하는 함수입니다.

private void Save_csv(string fileName, DataGridView dgview, 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); //UTF8로 엔코딩

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

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

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

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

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

 

댓글

💲 추천 글