안녕하세요.
오늘은 C#에서 Datagrid의 내용을 엑셀에서도 볼 수 있는 csv 파일로 저장하는 방법에 대해
알아 보겠습니다. (마우스 우측 버튼 클릭 메뉴에 Datagrid를 csv 파일로 저장하는 기능 구현)
특별히 어려운 내용은 없구요. 보시면 직관적으로 이해하실 수 있으실 겁니다.
자, 그럼 시작해 볼까요?
1. 먼저 마우스 우측 버튼 클릭 시 csv 파일 저장 메뉴를 구현하기 위해서는 xaml 파일 내 Datagrid 표현 부분에 아래와
같이 작성하시면 됩니다.
<DataGrid x:Name="Datagrid명"
......
>
<DataGrid.ContextMenu>
<ContextMenu Name="cm" >
<MenuItem Name="miSaveascsv" Header="SaveAs *.csv" Style="
{DynamicResource Cmi1}" Click="miSaveascsv_Click"/>
</ContextMenu>
</DataGrid.ContextMenu>
2. 다음은 Datagrid 에서 마우스 우측 버튼을 클릭하여 Datagrid의 내용을 csv 파일로 저장하는 내용입니다.
먼저 공통 함수 클래스에 아래 함수를 정의합니다.
public bool SaveToCSV(System.Windows.Controls.DataGrid dataGrid, string Filename)
{
bool IsVaild = false;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "Save CSV Files";
saveFileDialog.Filter = "CSV file (*.csv)|*.csv";
saveFileDialog.FileName = Filename;
string gridname = Filename;
Nullable<bool> result = saveFileDialog.ShowDialog();
// Process save file dialog box results
if (result == true)
{
string path = System.IO.Path.GetFullPath(saveFileDialog.FileName);
createcsvfile(dataGrid, path);
IsVaild = true;
}
return IsVaild;
}
private void createcsvfile(System.Windows.Controls.DataGrid dataGrid, string FilePath)
{
dataGrid.SelectionMode = DataGridSelectionMode.Extended;
dataGrid.SelectAllCells();
dataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dataGrid);
dataGrid.UnselectAllCells();
dataGrid.SelectionMode = DataGridSelectionMode.Single;
String result = (string)System.Windows.Clipboard.GetData(System.Windows.DataFormats.CommaSeparatedValue);
File.AppendAllText(FilePath, result, UnicodeEncoding.UTF8);
}
그리고 Datagrid 마우스 우측 버튼 클릭 이벤트를 아래와 같이 작성합니다.
private void miSaveascsv_Click(object sender, RoutedEventArgs e)
{
DateTime dt = DateTime.Now;
String _sysdate = dt.ToString("yyyyMMddHHmmss");
CommonFunction func = new CommonFunction();
string ExportName = "csv_file_" + _sysdate;
bool result = func.SaveToCSV(Datagrid명, ExportName);
if (result == true)
{
MessageBox.Show("csv 파일로 저장되었습니다.", "확인");
}
}
어때요? 간단하죠?
하지만 C#을 처음 접하시는 초보자분들에겐 쉽지 않은 내용일 수도 있습니다.
그럼, 짧은 내용이었지만 많은 분들에게 도움이 되었길 기원하며 이만 물러가겠습니다.
감사합니다. ^^+
그런데 혹시 가슴이 답답해 명상이나 힐링이 필요하시다면? 들러 주세요~ ^^
https://youtu.be/oRHsThgQdzk?feature=shared
'C#' 카테고리의 다른 글
C# WPF 프로그램 내에서 버튼 이미지 변경 (1) | 2024.07.16 |
---|---|
C# WPF Datagrid 내 전체 Checkbox 선택, 해제하기 (0) | 2024.07.04 |
c# WPF 천 단위 콤마(,) 표시하기 (0) | 2024.07.03 |
C# WPF Datagrid Cell 가져오기 (0) | 2024.07.03 |
C# WPF 전역변수 정의하기 (0) | 2023.05.27 |
댓글