问题描述
privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){stringsheetName=comboBox1.Text;stringstrCom=@"SELECT*FROM["+sheetName+"]";OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,oledbcConnection);DataSetmyDataSet=newDataSet();myCommand.Fill(myDataSet,"["+sheetName+"]");dataGridView1.DataMember="["+sheetName+"]";dataGridView1.DataSource=myCommand.SelectData(strCom).Tables[0];DataTabledt=newDataTable();myCommand.Fill(dt);tpoint=dt.Rows.Count;//定义二维数组存储Excel表中读取的数据for(inti=0;i<dt.Rows.Count;i++)if(dt.Rows[i][0]!=null){//将Excel表中的数据存储到数组data[i].x=int.Parse(dt.Rows[i][0].ToString());data[i].y=int.Parse(dt.Rows[i][1].ToString());data[i].p[0]=float.Parse(dt.Rows[i][2].ToString());data[i].p[1]=float.Parse(dt.Rows[i][3].ToString());data[i].p[2]=float.Parse(dt.Rows[i][4].ToString());data[i].n[0]=double.Parse(dt.Rows[i][5].ToString());data[i].n[1]=double.Parse(dt.Rows[i][6].ToString());data[i].n[2]=double.Parse(dt.Rows[i][7].ToString());}else{break;}}
解决方案
解决方案二:
data[i].p[0]=float.Parse(dt.Rows[i][2].ToString());每次导入,列二都会出现异常。。。。显示“未将对象引用设置到对象的实例。”
解决方案三:
加入断点,发现mydataset也为null
解决方案四:
myDataSet为null说明都没有查询结果,data[i].p[0]=float.Parse(dt.Rows[i][2].ToString());空数据自然就会报错。检查语句看看,oledbcConnection这个是什么状态,要Open
解决方案五:
sheetName传值传错了吧你看到excel里的工作簿名称是Sheet1但是你用oledb去访问的时候,必须select*from$Sheet1
解决方案六:
dt显示有数据下面是定义的数据结构,会不会是p【】和n【】没有初始化,但是不知道该怎么初始化呢publicstructpoint{publicintx;publicinty;publicfloat[]p;publicdouble[]n;}