Hi farahlawi95,
You have to use TextFieldParser with the code.
Check this example. Now please take its reference and correct your code.
CSV Data
id,name,country
1,dhyia,
2,fateh,"kl,my"
HTML
<asp:Button Text="Upload" OnClick="Upload" runat="server" />
<hr />
<asp:GridView runat="server" ID="gvDetails"></asp:GridView>
Namespaces
C#
using System.Data;
using Microsoft.VisualBasic.FileIO;
VB.Net
Imports System.Data
Imports Microsoft.VisualBasic.FileIO
Code
C#
protected void Upload(object sender, EventArgs e)
{
DataTable dt = new DataTable();
string csvPath = Server.MapPath("~/Files/Sample.csv");
using (TextFieldParser parser = new TextFieldParser(csvPath))
{
parser.Delimiters = new string[] { "," };
bool firstRow = true;
while (true)
{
string[] parts = parser.ReadFields();
if (parts != null)
{
if (firstRow)
{
firstRow = false;
foreach (string cell in parts)
{
dt.Columns.Add(cell);
}
}
else
{
dt.Rows.Add();
int i = 0;
foreach (string cell in parts)
{
dt.Rows[dt.Rows.Count - 1][i] = cell;
i++;
}
}
}
else
{
break;
}
}
}
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
VB.Net
Protected Sub Upload(ByVal sender As Object, ByVal e As EventArgs)
Dim dt As DataTable = New DataTable()
Dim csvPath As String = Server.MapPath("~/Files/Sample.csv")
Using parser As TextFieldParser = New TextFieldParser(csvPath)
parser.Delimiters = New String() {","}
Dim firstRow As Boolean = True
While True
Dim parts As String() = parser.ReadFields()
If parts IsNot Nothing Then
If firstRow Then
firstRow = False
For Each cell As String In parts
dt.Columns.Add(cell)
Next
Else
dt.Rows.Add()
Dim i As Integer = 0
For Each cell As String In parts
dt.Rows(dt.Rows.Count - 1)(i) = cell
i += 1
Next
End If
Else
Exit While
End If
End While
End Using
gvDetails.DataSource = dt
gvDetails.DataBind()
End Sub
Screenshot