I may be doing this all wrong, but here goes:\[code\] OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [CRPRList$]", XLSConnect); //the XLSConnect is from a spreadsheet. I've confirmed the data is there. DataSet ds = new DataSet(); adapter.Fill(ds); DataTable thisTable = ds.Tables[0]; //The table exists and it does populate thisTable.Columns.Add("Summary"); //The new column is added and I am able to populate it (below) for (int rowNum = 0; rowNum < thisTable.Rows.Count; rowNum++) { //Here I'm cycling through the row items DataRow row = thisTable.Rows[rowNum]; string pr = row["PR"].ToString(); string cr = row["CR"].ToString(); //The first two column values are grabbed and examined if ((pr != "" && pr != null)&&(cr == null || cr == "")) { //if the first column is empty then the second is examined and I am attempting //to populate the first column using the searchForCRNumber method //This method returns a string cr = this.searchForCRNumber(pr); //assignment works row[0] = cr; //Here is the problem, this assignment does not work (more explained below) } row["Summary"] = this.searchForSummary(cr); row.AcceptChanges(); } this.showResults(thisTable);//works, except the changes above are not applied\[/code\]The line \[code\]row[0] = cr;\[/code\] is naturally an empty value and so it comes up as type \[code\]DBNull\[/code\] and won't accept \[code\]cr\[/code\] string.The error I'm getting is \[code\]System.FormatException: Input string was not in a correct format.\[/code\] I've searched for ways to convert \[code\]row[0]\[/code\] to an empty string or some other way to cast the \[code\]cr\[/code\] and so far I've not found a way to do this.EDIT I'm adding more to help understand what is going on around this problem. I thought I was thorough enough above, but perhaps not...The data for \[code\]XLSConnect\[/code\] comes from:\[code\]private bool XSLConnection(string filePath, string fileType) { // returns false if XSL or XSLX is not the fileType string strConn; if (fileType.ToLower() == "xls" || fileType.ToLower() == "xlsx") { strConn = (fileType == "xlsx") ? string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath) : string.Format("Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0\"", filePath); XLSConnect = new OleDbConnection(strConn); return true; } else return false;}\[/code\]Here's the \[code\]searchForCRNumber\[/code\] method:\[code\]private string searchForCRNumber(string PRNumber) { return this.getProperty("MyReturnColumn", PRNumber, "MyMatchColumn");}\[/code\]And here's the \[code\]getProperty\[/code\] method:\[code\]private string getProperty(string searchProperty, string searchVal, string rtrnProperty) { string undefined = "Undefined"; string rtrn = null; string query = "SELECT " + rtrnProperty + " FROM MySQLTable WHERE " + searchProperty + " = '" + searchVal + "'"; this.QCConn.Open(); SqlDataReader reader = this.runQCConnect(query).ExecuteReader(); reader.Read(); rtrn = (!reader.HasRows)? undefined : reader[0].ToString(); if (rtrn == "" || rtrn == null) rtrn = undefined; this.QCConn.Close(); return rtrn;}\[/code\]