How to Import CSV File and bind csv file data to gridview in asp.net using c#
I am going to demonstrate in this article about importing CSV file data into datatable and then bind that data to Asp.net gridview control. I have tried to make code simpler and less line of code.
I am assuming that you have saved the csv file to server by using file-upload control.
I am assuming that you have saved the csv file to server by using file-upload control.
- After that create function which returns string[]
private IEnumerable<string[]> GetAllDataFromCSVFile(string FileName)
{
string str;
using (StreamReader rd=new StreamReader(FileName))
{
while ((str = rd.ReadLine()) != null)
{
yield return str.Split(',');
}
}
}
- Create another function which returns final data-table with CSV File data
private DataTable GetCSVData(string FileName)
{
var values = GetAllDataFromCSVFile(FileName);
DataTable dt = new DataTable();
int j=0;
foreach (var item in values.FirstOrDefault())
{
if (!dt.Columns.Contains(item))
{
dt.Columns.Add(item.Replace("\"",""));
j++;
}
}
var allvalues=values.Skip(1).ToList();
for (int i = 0; i < allvalues.Count; i++)
{
dt.Rows.Add(allvalues[i].Take(dt.Columns.Count).ToArray());
//remove double quote from data
for(int co=0;co<j;co++)
{
dt.Rows[i][co] = dt.Rows[i][co].ToString().Replace("\"","");
}
}
return dt;
}
- Now call GetCSVData function from Submit event
protected void submit_Click(object sender,EventArgs e)
{
string FileName = "";
//your file upload logic
DataTable dt = GetCSVData(FileName);
Gridview1.DataSource = dt;
Gridview1.DataBind();
}
I got a small bug on your code at GetCSVData method, the fix is:
ReplyDeletedt.Rows[i][co] = dt.Rows[i][co].ToString().Replace("\"", "");
Thank you Marcelo for your warm reply, i will correct the bug shortly.
Deletewhat about fields with a comma? I have such fields capped with quotes... example..."City, State Zip"
ReplyDeleteGridView data binding to database in C#.NET
ReplyDeleteGood blog posst
ReplyDelete