To insert rows and/cols, you will need to call grid.Rows.InsertRange and grid.Cols.InsertRange. To decide how many rows/columns you need to insert, you will have to get the data from the Clipboard and see how big the paste is. Here is a code snippet.
DataObject data = (DataObject) Clipboard.GetDataObject();
if(data.GetDataPresent(DataFormats.Text))
{
string s = (string)data.GetData(DataFormats.Text);
string[] rows = s.Split(new char[]{''''});
int numRows = rows.GetLength(0);
if(numRows > 0 && rows[numRows - 1].Length == 0)
numRows--; //remove extra empty row if present
int numCols = 0;
if(numRows > 0)
{
string[] cols = rows[0].Split(new char[]{''\t''});
numCols = cols.GetLength(0);
}
Console.WriteLine("{0} rows by {1} cols", numRows, numCols);
}