>백엔드 개발 >C++ >C#에서 DataTable을 CSV 파일로 효율적으로 변환하는 방법은 무엇입니까?

C#에서 DataTable을 CSV 파일로 효율적으로 변환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-15 15:31:42919검색

How to Efficiently Convert a DataTable to a CSV File in C#?

C#에서 DataTable을 CSV로 변환

DataTable 데이터를 CSV 파일로 저장할 때 데이터 구분이 잘못되는 문제가 발생할 수 있습니다. 솔루션은 다음과 같습니다.

다음 코드를 고려해보세요.

<code class="language-csharp">StringBuilder sb = new StringBuilder();
foreach (DataColumn col in dt.Columns)
{
    sb.Append(col.ColumnName + ',');
}
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);

foreach (DataRow row in dt.Rows)
{
    // ... (此处代码仅写入每一行的第一个单元格数据) ...
}

File.WriteAllText("test.csv", sb.ToString());</code>

위 코드로 생성된 CSV 파일에는 각 행의 첫 번째 셀에 대한 데이터만 포함됩니다. 이 문제를 해결하려면 보다 강력한 접근 방식을 사용할 수 있습니다.

.NET 3.5 이상

<code class="language-csharp">StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    string[] fields = row.ItemArray.Select(field => field.ToString()).ToArray();
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());</code>

.NET 4.0 이상

.NET 4.0 이상의 경우 코드를 더욱 단순화할 수 있습니다.

<code class="language-csharp">StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());</code>

특수문자 처리

데이터 필드에서 특수 문자(예: 큰따옴표)를 처리해야 하는 경우 코드에서 루프 블록을 수정할 수 있습니다.

<code class="language-csharp">foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field =>
        string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
    sb.AppendLine(string.Join(",", fields));
}</code>

또한 대용량 문서를 메모리에 저장하는 것을 피하기 위해 전체 문서를 한 번에 작성하는 대신 CSV 내용을 한 줄씩 작성할 수 있습니다.

위 내용은 C#에서 DataTable을 CSV 파일로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.