WPF

DataGrid의 내용을 CSV 파일로 출력할때 행과 열이 맞지않는 경우의 해결방법

지오준 2022. 5. 12.
반응형

1. 원인 : CSV파일 출력 내용중에서 콤마(,)를 포함할 경우에는 열이 추가로 생성되는 문제가 발생할 수 있습니다.

2. 해결방법 : CSV파일 출력 내용을 ""포함해서(예 ”내용”) 설정해주면 정상적으로 행과 열이 일치하게 됩니다.

3. 샘플코드

// CSV파일생성
using (var streamWriter = new StreamWriter(filePath, false, Encoding.GetEncoding("Shift_JIS")))
{
    // DataGrid헤더(컬럼)행출력
    streamWriter.WriteLine(string.Join(",", DataGrid.Columns.Select(e => e.Header)));

    // DataGrid내용행 출력
    foreach (var itemSource in DataGrid.ItemsSource)
    {
        // DataGrid내용행 리스트 취득
        var values = itemSource.ToList();
        // DataGrid컬럼별 설정값 취득
        for (int i = 0; i < values.Count(); i++)
        {
            //DataGrid컬럼별 설정값을 ""안으로 넣어서 문자열화시킴
            values[i] = (object)(string.Format("\"{0}\"", values[i]));
        }
        // DataGrid컬럼별 설정값행을 출력
        streamWriter.WriteLine(string.Join(",", values));
    }
}

 

반응형

댓글