C# DataTable to CSV Example: A Step-by-Step Guide

watch_later 1/13/2025

Exporting data from a DataTable to a CSV file is a common requirement in many .NET applications. CSV files are lightweight and easy to use for data exchange.

In this article, we will explore how to convert a DataTable to a CSV file in C#, save the DataTable as CSV, and write the DataTable to a CSV file with headers and UTF-8 encoding. Let’s dive in!  

Why Export DataTable to CSV in C#?

  • CSV files are widely used for data sharing.
  • Easy to read and write using standard libraries.
  • Compatible with most applications, including Excel.

How to Export DataTable to CSV in C#

The process of generating a CSV file from a DataTable involves iterating through rows and columns and writing the data into a text file in CSV format. Below is a complete example:

Code Example: Write DataTable to CSV File in C#

using System;
using System.Data;
using System.IO;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        // Create a sample DataTable
        DataTable dataTable = new DataTable("SampleTable");
        dataTable.Columns.Add("ID"typeof(int));
        dataTable.Columns.Add("Name"typeof(string));
        dataTable.Columns.Add("Age"typeof(int));
 
        dataTable.Rows.Add(1, "Nikunj Satasiya", 30);
        dataTable.Rows.Add(2, "Mansi Satasiya", 25);
        dataTable.Rows.Add(3, "Samuel Lee", 35);
 
        // Specify the file path
        string filePath = "DataTableExport.csv";
 
        // Export DataTable to CSV
        ExportDataTableToCSV(dataTablefilePath);
 
        Console.WriteLine("DataTable exported to CSV successfully.");
    }
 
    public static void ExportDataTableToCSV(DataTable dtstring filePath)
    {
        StringBuilder sb = new StringBuilder();
 
        // Add column headers
        string[] columnNames = new string[dt.Columns.Count];
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            columnNames[i] = dt.Columns[i].ColumnName;
        }
        sb.AppendLine(string.Join(","columnNames));
 
        // Add rows
        foreach (DataRow row in dt.Rows)
        {
            string[] fields = new string[dt.Columns.Count];
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                fields[i] = row[i].ToString().Replace(","" "); // Handle commas in data
            }
            sb.AppendLine(string.Join(","fields));
        }
 
        // Write to file with UTF-8 encoding
        File.WriteAllText(filePathsb.ToString(), Encoding.UTF8);
    }
}

Explanation of the Code

  1. Create a DataTable: Define columns and add sample rows to simulate data.
  2. Build the CSV String: Iterate through the DataTable to extract column headers and rows.
  3. Handle Special Characters: Replace commas in data to maintain CSV format integrity.
  4. Write to File: Use File.WriteAllText with UTF-8 encoding to save the CSV file.

Advanced Features

C# DataTable to CSV with Headers

Adding headers ensures the CSV file is easily readable and self-explanatory. The above example demonstrates how to include column names as headers.

Efficient DataTable to CSV Conversion in C#

To optimize performance, use StringBuilder for string manipulations and avoid creating large intermediate strings.

Custom CSV Export from DataTable C#

You can customize the delimiter (e.g., semicolon ; instead of a comma ,) or include additional formatting as per requirements.

Read DataTable and Save as CSV in C#

For real-world scenarios, data might come from databases or APIs. You can populate the DataTable using a SqlDataAdapter or other data sources and then export it to CSV.

C# DataTable to CSV Encoding UTF-8

UTF-8 encoding ensures compatibility with international characters and avoids issues with special characters.

Export DataTable to CSV Without Third-Party Tools

This example uses only built-in .NET libraries, making it lightweight and dependency-free.

Best Practices for C# Export DataTable to CSV

  • Validate Data: Ensure the DataTable is not null and contains data before exporting.
  • Handle Exceptions: Use try-catch blocks to handle file IO exceptions.
  • Test with Large Data: Optimize the code for performance with large datasets.

C# DataTable to CSV Example Code

Here’s another quick snippet demonstrating how to generate a CSV from DataTable:

public static string ConvertDataTableToCSVString(DataTable dt)
{
    StringBuilder sb = new StringBuilder();
 
    // Add column headers
    string[] columnNames = dt.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray();
    sb.AppendLine(string.Join(",", columnNames));
 
    // Add rows
    foreach (DataRow row in dt.Rows)
    {
        string[] fields = row.ItemArray.Select(field => field.ToString().Replace(","" ")).ToArray();
        sb.AppendLine(string.Join(",", fields));
    }
 
    return sb.ToString();
}

Conclusion

Exporting a DataTable to a CSV file in C# is straightforward and highly customizable. This guide provided a complete C# DataTable to CSV example, demonstrated efficient DataTable to CSV conversion, and explored ways to enhance the export process. By following this article, you can generate CSV files with headers, handle special characters, and use UTF-8 encoding for better compatibility.

If you have any questions or need further assistance, feel free to reach out in the comments below!

Codingvila provides articles and blogs on web and software development for beginners as well as free Academic projects for final year students in Asp.Net, MVC, C#, Vb.Net, SQL Server, Angular Js, Android, PHP, Java, Python, Desktop Software Application and etc.

If you have any questions, contact us on info.codingvila@gmail.com

sentiment_satisfied Emoticon