未将对象引用设置到对象的实例”问题
- C# code
using MSExcel=Microsoft.Office.Interop.Excel; private void InsertXlsToDataBase()//将Excel文件中的数据导入数据库中 { int i = 2; string cName = "", cId = ""; MSExcel.Application XlsA = new MSExcel.Application(); if (XlsA == null) { MessageBox.Show("无法创建Excel对象,情检查Excel是否可用或者是否安装好Excel!", "系统提示"); return; } MSExcel.Workbooks XlsW = XlsA.Workbooks; MSExcel.Workbook XlsW1 = XlsW.Add(cFilePath); MSExcel.Sheets XlsS = XlsW1.Sheets; MSExcel.Worksheet XlsS1 = (MSExcel.Worksheet)XlsS[1]; try { while (XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]).Value2.ToString().Trim() != "") { cName = XlsA.get_Range(XlsA.Cells[i, 1], XlsA.Cells[i, 1]).Value2.ToString(); cId = XlsA.get_Range(XlsA.Cells[i, 2], XlsA.Cells[i, 2]).Value2.ToString(); string SqlStr = "insert into Table1(cName,cId) values('" + cName + "','" + cId + "')"; CDataBase.UpdateDB(SqlStr); i++; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { XlsW.Close(); XlsA.Quit(); } }
以上代码可以运行,但运行时就报“未将对象引用设置到对象的实例”;实在是找不出来哪里错了,请大家帮帮忙
[解决办法]
(MSExcel.Worksheet)XlsS[1];
XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]).Value2.ToString().Trim()
[解决办法]
F11单步,判断为null
[解决办法]
你调试看 在哪报错的 这个错误是对象为空时候 要调用该对象抛出的异常!
[解决办法]
单步调试,看看问题出在哪段? 然后再分析
[解决办法]
在函数开始位置设置断点
然后进行调试,到断点后按F11进行单步执行,这个时候函数就每次执行一步
然后你就能看到在哪个位置抛出的该异常,是哪个对象抛出的
这样就容易改了!
做程序要会调试的
[解决办法]
未将对象引用设置到对象的实例
就是使用了某个空对象,你就找找哪个对象可能是null。
MSExcel.Sheets XlsS = XlsW1.Sheets;
XlsS == null ?
XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]).Value2.ToString().Trim()
XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]) == null?
2楼也说了,单步调试一下吧。
[解决办法]
if(XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]).Value2!=null)
{
//再写你的代码
}
因为如果XlsA.get_Range(XlsA.Cells[i,1],XlsA.Cells[i,1]).Value2=null,这.ToString()就会未将对象实例化的