How to convert datatable into csv/excel file in C#
Often we require to convert the datatable in context in a c# code into a plain text csv (comma separated values) or a excel readable file. Here i have created a c# console application code snipped to convert a sample datatable into csv notepad file or csv excel readable file. You can utilize it where you need it.
Hope it would be helpful:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
using System;
using System.Text;
using System.Data;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
//Create a sample datatable
DataTable dt=new DataTable();
dt.Columns.Add("FisrtName", typeof(string));
dt.Columns.Add("LastName", typeof(string));
DataRow dr1 = dt.NewRow();
dr1["FisrtName"]="Vishal";
dr1["LastName"]="Grade";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["FisrtName"] = "Tony";
dr2["LastName"] = "Stark";
dt.Rows.Add(dr2);
String result = DataTableToCSV(dt, ',');
//Wrire the result comma seprated string to a csv file which can be opened in excel
System.IO.File.WriteAllText(@"D:\\result.csv", result);
//Wrire the result comma seprated string to a csv text file
System.IO.File.WriteAllText(@"D:\\result.txt", result);
Console.Write(result);
}
//Function to convert datatble content into comma separated string
public static string DataTableToCSV(DataTable datatable, char seperator)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < datatable.Columns.Count; i++)
{
sb.Append(datatable.Columns[i]);
if (i < datatable.Columns.Count - 1)
sb.Append(seperator);
}
sb.AppendLine();
foreach (DataRow dr in datatable.Rows)
{
for (int i = 0; i < datatable.Columns.Count; i++)
{
sb.Append(dr[i].ToString());
if (i < datatable.Columns.Count - 1)
sb.Append(seperator);
}
sb.AppendLine();
}
return sb.ToString();
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Happy learning...!!
No comments:
Post a Comment