首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

未将对象引用设置到对象的实例”有关问题

2012-07-22 
未将对象引用设置到对象的实例”问题C# codeusing MSExcelMicrosoft.Office.Interop.Excelprivate void I

未将对象引用设置到对象的实例”问题

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()就会未将对象实例化的

热点排行