Um...
String.Format uses '{' and '}' to indicate parameters for substitution - but the parameters are indicated by a numeric index rather than being a format string and hoping they match up.
So:
String.Format("{0}", data);
Is valid, but what you tried is not.
But there are no many other problems here...
Try this instead of string.Format:
DateTime date = (DateTime) (row.Cells["Sent Date"].Value);
string formattedDate = date.ToString("dd/MM/yyyy hh:mm:tt");