728x90
반응형
안녕하세요
오늘은 오랜만에 소소한 c# 지식 포스팅 하려 합니다.
C# Datagridview의 데이터를 Json, csv, text, xml등의 파일로 데이터 변환 방법입니다.
1. Json - Datagridview 데이터를 JSON으로 데이터 변환
public static void ExportToJson(DataGridView dgv, string fileName)
{
StreamWriter sw = new StreamWriter(fileName);
string jsonStr = JsonConvert.SerializeObject(ExportToDataTable(dgv));
sw.WriteLine(jsonStr);
sw.Close();
}
2. CSV, Text - Datagridview 데이터를 CSV, 텍스트 데이터로 변환
public static void ExportToText(DataGridView dgv, string fileName, string delimiter)
{
StreamWriter sw = new StreamWriter(fileName);
DataTable dt = ExportToDataTable(dgv);
foreach (DataColumn col in dt.Columns)
{
sw.Write($"{col.ColumnName}{delimiter}");
}
sw.WriteLine();
foreach (DataRow dr in dt.Rows)
{
int r = 0;
foreach (var item in dr.ItemArray)
{
if (dt.Columns.Count == ++r)
sw.Write($"{item.ToString()}");
else
sw.Write($"{item.ToString()}{delimiter}");
}
sw.WriteLine();
}
sw.Close();
}
반응형
3. XML - Datagridview 데이터를 XML로 변환
public static void ExportToXML(DataGridView dgv, string tableName, string fileName)
{
ExportToDataTable(dgv, tableName).WriteXml(fileName);
}
4. Datatable - Datagridview를 Datatable로 변환
public static DataTable ExportToDataTable(DataGridView dgv, string tableName)
{
DataTable dt = ExportToDataTable(dgv);
dt.TableName = tableName;
return dt;
}
public static DataTable ExportToDataTable(DataGridView dgv)
{
DataTable dataTable = new DataTable();
foreach (DataGridViewColumn col in dgv.Columns)
{
DataColumn dc = dataTable.Columns.Add(col.Name);
//dc.Caption = col.HeaderText;
}
foreach (DataGridViewRow dr in dgv.Rows)
{
DataRow drNew = dataTable.NewRow();
foreach (DataGridViewCell cell in dr.Cells)
{
drNew.SetField(cell.ColumnIndex, cell.Value);
}
dataTable.Rows.Add(drNew);
}
return dataTable;
}
728x90
반응형
'소소한 C# 지식' 카테고리의 다른 글
[C#] C# 에서 Window Service 상태 체크 및 시작 종료 하기 (9) | 2022.07.27 |
---|---|
[C#] c# Winform Text 박스 - 글자수 제한, 리셋 (30) | 2022.07.09 |
[C#]Web Api "일치하는 여러 동작이 확인 되었습니다" 오류 (25) | 2022.05.28 |
[c#]WinForm Datagridview CheckBox 사용 방법 (30) | 2022.05.25 |
[C#]C#에서 메일 보내기 (25) | 2022.05.21 |
댓글