Cannot perform runtime binding on a null reference - Empty Excel Cells

Trevor Daniel picture Trevor Daniel · Jan 30, 2015 · Viewed 41.7k times · Source

I cannot seem to think of a way to correct the error mentioned in the title and was looking for some ideas on what should be done.

I am trying to read the rows of a excel spreadsheet into an object.

The first time it loops I have no problems because row 1, column 1 and row 1 column 2 have data in them.

But when it gets to row 2, column 1 and row 2 column 2 it falls over with the above error because those cells in spreadsheet are "empty"

I just cannot work out where I can put some "if null" checks in.

Can anyone suggest how to do it please?

Here is my code...

private static void IterateRows(Excel.Worksheet worksheet)
    {
        //Get the used Range
        Excel.Range usedRange = worksheet.UsedRange;

        // create an object to store the spreadsheet data
        List<SPREADSHEETModel.spreadsheetRow> spreadsheetrows = new List<SPREADSHEETModel.spreadsheetRow>();

        //Iterate the rows in the used range
        foreach (Excel.Range row in usedRange.Rows)
        {
            for (int i = 0; i < row.Columns.Count; i++)
            {
                spreadsheetrows.Add(new SPREADSHEETModel.spreadsheetRow()
                {
                    col1 = row.Cells[i + 1, 1].Value2.ToString(),
                    col2 = row.Cells[i + 1, 2].Value2.ToString()
                });
            }
        }
    }

Answer

Saravana Kumar picture Saravana Kumar · Jan 30, 2015

Do not use .ToString() it will cause null reference exception when the value is null. Use Convert.ToString(), it will return empty string for the null value.

col1 = Convert.ToString(row.Cells[i + 1, 1].Value2);
col2 = Convert.ToString(row.Cells[i + 1, 2].Value2);