우선 윈폼으로 버튼을 한 개 만든 후, 버튼 클릭시 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 파일 저장 완료!");
}
'공학속으로 > C#' 카테고리의 다른 글
C# 텍스트 파일 합치기 (0) | 2023.03.06 |
---|---|
C# 텍스트 파일 라인수로 분할하여 저장하기 (0) | 2023.03.06 |
c# DataGridView의 데이터를 엑셀파일로 저장하는 예제 (0) | 2021.12.21 |
[c#] 이미지 다운로드 (0) | 2020.04.03 |
[c#] 파일명, 폴더 경로 추출, 합치기, 찾기 (0) | 2020.04.03 |
댓글