从Excel中读取数据SpreadSheet – 无法对空引用执行运行时绑定

我有下面的代码来读取Excel文件中的数据,我遇到的问题是,当我尝试读取范围数据,我得到一个exception“不能执行空引用上的运行时绑定”在这一行

if (Int32.TryParse(xlRange.Cells[1, 4].Value2.ToString(), out value)) 

我想知道的是如何正确访问范围内的信息。 提前致谢

 void ReadFromExcelToGrid2(String fileNameString) { try { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fileNameString); //get list of worksheets associated with the current workbook Microsoft.Office.Interop.Excel.Sheets worksheets = xlWorkbook.Worksheets; //list the work books in a dropdownlist IDictionary<int, String> sheets = new Dictionary<int, String>(); foreach (Microsoft.Office.Interop.Excel.Worksheet displayWorksheet in xlWorkbook.Worksheets) { sheets.Add(displayWorksheet.Index, displayWorksheet.Name); } cmbWorksheets.DataSource = new BindingSource(sheets, null);; cmbWorksheets.DisplayMember = "Value"; cmbWorksheets.ValueMember = "Key"; Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[4]; // assume it is the first sheet Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange; // get the entire used range int value = 0; if (Int32.TryParse(xlRange.Cells[1, 4].Value2.ToString(), out value)) // get the F cell from the first row { int numberOfColumnsToRead = value * 4; for (int col = 7; col < (numberOfColumnsToRead + 7); col++) { Console.WriteLine(xlRange.Cells[1, col].Value2.ToString()); // do whatever with value } } } catch (Exception ex) { throw ex; } } 

 if (xlRange.Cells[row, 1].Text == "") { xlRange.Cells[row, 1].value = "Blank"; } 

上面的代码将解决这个问题。 然而, Blank不会在单元格中。 但它会让你继续下去。 基本上C#/ Excel不喜欢null

如果你使用“ Convert.ToString() ”而不是“ .ToString() ”呢? 如果“xlRange.Cells [1,4] .Value2”为空,那么它将不会有.ToString()函数,如果我正确思考,应该抛出一个exception。 Convert.ToString()和.ToString()之间的区别是Convert.ToString()将返回一个空值,而.ToString()将会爆炸。

你可以在代码执行之前设置一个断点,以确保xlRange实际上包含信息吗?