본문 바로가기
소소한 C# 지식

[C#]Datagridview 데이터 변환 - Json, csv, text, xml, Datatable

by 해뤼맘 2022. 7. 7.
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
반응형

댓글