Hi bakhtawar,
I have created a sample which full fill your requirement you need to modify the code according to your need.
HTML
<div>
<asp:TextBox ID="textData" OnTextChanged="Paste" AutoPostBack="true" TextMode="MultiLine"
Rows="5" Width="200" runat="server" />
<br />
<asp:GridView ID="gvData" runat="server" />
</div>
C#
DataTable gridviewss;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gridviewss = new DataTable();
gridviewss.Columns.AddRange(new DataColumn[] { new DataColumn("Column3"), new DataColumn("Column4") });
gridviewss.Rows.Add("123", "345");
gridviewss.Rows.Add("1345", "235");
gridviewss.Rows.Add("758", "3658");
gridviewss.Rows.Add("958", "4235");
gridviewss.Rows.Add("1d23", "7345");
gridviewss.Rows.Add("13d45", "2235");
ViewState["GridData"] = gridviewss;
gvData.DataSource = gridviewss;
gvData.DataBind();
}
}
protected void Paste(object sender, EventArgs e)
{
if (ViewState["GridData"] != null)
{
gridviewss = ViewState["GridData"] as DataTable;
int previousColumnCount = gridviewss.Columns.Count;
string cCon = Request.Form[textData.UniqueID];
cCon = cCon.Replace("\r\n", "@");
int i = 1;
if (ViewState["ColumnCount"] != null)
{
i = Convert.ToInt32(ViewState["ColumnCount"]);
}
for (int a = 0; a < cCon.Split('@')[0].Split('\t').Length; a++)
{
if (!string.IsNullOrEmpty(cCon.Split('@')[0].Split('\t')[a].ToString()))
{
DataColumn newColumn = new DataColumn("excelcol" + i.ToString(), typeof(System.String));
gridviewss.Columns.Add(newColumn);
i++;
}
}
ViewState["ColumnCount"] = i;
int j = 0;
int columnCount = gridviewss.Columns.Count;
foreach (string row in cCon.Split('@'))
{
if (!string.IsNullOrEmpty(row))
{
foreach (string cell in row.Split(' '))
{
if (!string.IsNullOrEmpty(cell))
{
int l = previousColumnCount;
if (cell.Split('\t').Length > 1)
{
for (int s = 0; s < cell.Split('\t').Length; s++)
{
if (!string.IsNullOrEmpty(cell.Split('\t')[s].ToString()))
{
gridviewss.Rows[j][l] = cell.Split('\t')[s];
l++;
}
}
}
else
{
gridviewss.Rows[j][l] = cell.Trim();
l++;
}
j++;
}
}
}
}
ViewState["GridData"] = gridviewss;
gvData.DataSource = ViewState["GridData"] as DataTable;
gvData.DataBind();
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
gridviewss = New DataTable()
gridviewss.Columns.AddRange(New DataColumn() {New DataColumn("Column3"), New DataColumn("Column4")})
gridviewss.Rows.Add("123", "345")
gridviewss.Rows.Add("1345", "235")
gridviewss.Rows.Add("758", "3658")
gridviewss.Rows.Add("958", "4235")
gridviewss.Rows.Add("1d23", "7345")
gridviewss.Rows.Add("13d45", "2235")
ViewState("GridData") = gridviewss
gvData.DataSource = gridviewss
gvData.DataBind()
End If
End Sub
Protected Sub Paste(sender As Object, e As EventArgs)
If ViewState("GridData") IsNot Nothing Then
gridviewss = TryCast(ViewState("GridData"), DataTable)
Dim previousColumnCount As Integer = gridviewss.Columns.Count
Dim cCon As String = Request.Form(textData.UniqueID)
cCon = cCon.Replace(vbCr & vbLf, "@")
Dim i As Integer = 1
If ViewState("ColumnCount") IsNot Nothing Then
i = Convert.ToInt32(ViewState("ColumnCount"))
End If
For a As Integer = 0 To cCon.Split("@"c)(0).Split(ControlChars.Tab).Length - 1
If Not String.IsNullOrEmpty(cCon.Split("@"c)(0).Split(ControlChars.Tab)(a).ToString()) Then
Dim newColumn As New DataColumn("excelcol" + i.ToString(), GetType(System.String))
gridviewss.Columns.Add(newColumn)
i += 1
End If
Next
ViewState("ColumnCount") = i
Dim j As Integer = 0
Dim columnCount As Integer = gridviewss.Columns.Count
For Each row As String In cCon.Split("@"c)
If Not String.IsNullOrEmpty(row) Then
For Each cell As String In row.Split(" "c)
If Not String.IsNullOrEmpty(cell) Then
Dim l As Integer = previousColumnCount
If cell.Split(ControlChars.Tab).Length > 1 Then
For s As Integer = 0 To cell.Split(ControlChars.Tab).Length - 1
If Not String.IsNullOrEmpty(cell.Split(ControlChars.Tab)(s).ToString()) Then
gridviewss.Rows(j)(l) = cell.Split(ControlChars.Tab)(s)
l += 1
End If
Next
Else
gridviewss.Rows(j)(l) = cell.Trim()
l += 1
End If
j += 1
End If
Next
End If
Next
ViewState("GridData") = gridviewss
gvData.DataSource = TryCast(ViewState("GridData"), DataTable)
gvData.DataBind()
End If
End Sub
ScreenShot
