运行后出现错误“未将对象引用设置到对象的实例”------- DataRow[] dr = ds.Tables[0].Select();

protected void Button1_Click1(object sender, EventArgs e) { if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件 { Response.Write("<script>alert('请您选择Excel文件')</script> "); return;//当无文件时,返回 } string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名 if (IsXls != ".xls") { Response.Write("<script>alert('只可以选择Excel文件')</script>"); return;//当选择的不是Excel文件时,返回 } string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数 string savePath = Server.MapPath(("upfiles") + filename);//Server.MapPath 获得虚拟服务器相对路径 FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上 DataSet ds = ExcelSqlConnection(savePath, filename); //调用自定义方法 //DataRow[] dr = new DataRow(); //dr = ds.Tables[0].Select(); DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组 int rowsnum = ds.Tables[0].Rows.Count; if (rowsnum == 0) { Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示 } else { for (int i = 0; i < dr.Length; i++) { string id = dr[i]["学号"].ToString(); string pwd = dr[i]["密码"].ToString(); string classes = dr[i]["班级"].ToString(); string major = dr[i]["专业"].ToString(); } Response.Write("<script>alert('Excle表导入成功!');</script>"); }
}
#region 连接Excel 读取Excel数据 并返回DataSet数据集合 public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName) { string strCon = "server=.;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; SqlConnection ExcelConn = new SqlConnection(strCon); try { string strCom = string.Format("SELECT * FROM [Sheet1$]"); ExcelConn.Open(); SqlDataAdapter myCommand = new SqlDataAdapter(strCom, ExcelConn); DataSet ds = new DataSet(); myCommand.Fill(ds, "[" + tableName + "$]"); ExcelConn.Close(); return ds; } catch { ExcelConn.Close(); return null; } } #endregion }

"未将对象引用设置到对象的实例" 就是 你在获取数据时并未获取到数据,但你在后面的程序中用到了这个数据集的数据单元去取数据,这样会报错。追问

那请问该如何修改呢,我是个菜鸟不会改。。。。。谢谢奥

追答

for (int i = 0; i < dr.Length; i++) { string id = dr[i]["学号"].ToString(); string pwd = dr[i]["密码"].ToString(); string classes = dr[i]["班级"].ToString(); string major = dr[i]["专业"].ToString();
修改:

if(dr!=null)
{
for (int i = 0; i < dr.Length; i++) { string id = dr[i]["学号"].ToString(); string pwd = dr[i]["密码"].ToString(); string classes = dr[i]["班级"].ToString(); string major = dr[i]["专业"].ToString();

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-28
麻烦代码整理一下,再发上来,头都晕了,那还有心情看

未将对象引用设置到对象的实例
原因:电脑相关的服务没有启动造成的。1、首先点击打开电脑桌面左下角开始菜单栏中的“运行”选项。2、然后在出现的运行界面中,点击输入框,键入命令“services.msc”,按下enter键。3、然后在出现的服务界面中,找到Security Cente这个服务。4、找到这个服务之后,双击打开它,点击“启动类型”,选择“自...

foreach() 未将对象引用设置到对象的实例。 new不知道怎么改_百度知 ...
(DataRow row in dataSet.Tables["Students "].Rows)这句话加个断点,看一下是否为null,即查不出记录;如果是这个问题,加个if判断语句,return返回就行了。

添加DataRow 未将对象引用设置到对象的实例
你这一句:System.Data.DataRow row = ds.Tables["course"].NewRow();中的ds是什么?说得详细点儿?你是不是想自己构造一个数据表对象DataTable做为数据源?你可以直接构造一个DataTable做为数据源绑定也是一样的,如:DataTable dt = new DataTable("course");DataColumn dc_t = new DataColumn("...

未将对象引用设置到对象的实例
所以下面的Tables["[User]"];不存在 你要么Tables[0];要么adapter.Fill(myds,“User”);推荐前一种

未将对象引用设置到对象的实例
DataRow[]row1 = dt.Select("id=" + id); 这里抛空引用, 一定是使用了哪个对象的实例, 并且这个实例为空, 在这里我们可以看到只使用了一个对象的实例就是 dt , 所以可能的原因就是dt的值是空, 也就是说没有查询出来结果, 而且这里的结果既然使用id过滤 if(dt==null || dt.Count>0) ...

未将对象引用设置到对象的实例
报错的上面那一行。当dt没有找到你想要的行,那么会返回null给DataRow对象。所以接下来会爆出空引用异常 dt.Rows.Find能够查的是指定主键值的行,你确定你的textbox2里面的值,在dataTable的主键列里面存在?

System.NullReferenceException: 未将对象引用设置到对象的实例。
<connectionStrings>是否存在一个name属性为eshopConn的add元素且该元素的connectionString属性有赋值??

未将对象引用设置到对象的实例
10、重复定义造成未将对象引用设置到对象的实例错误.二、(1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.(2)控件名称与codebehind里面的没有对应 (3)未用new初始化对象 (4)在程序中所引用的控件不存在 解决方法:(...

...中的服务器错误。 未将对象引用设置到对象的实例。(中) 在位置 0...
冲突,可行的解决办法是使用金山卫士的系统优化,在一键优化里,关闭一些不常用的软件启动。这样开机后运行的程序少一些,冲突的概 率会下降。5.对于另一种应用程序出错,截图显示“应用程序出错,**内存地址不能读或不能写”,这种情况最复杂,若以上方法不能解决,则很可能 是硬件(主要是内存)故障,...

未将对象引用设置到对象的实例
可见你的错误已经不是 rowFound["BuyNum"] = count;\/\/修改订购数量这行了 懂?我本来就怀疑你的 rowFound["BuyNum"]是否存在,可是你说执行到if里面去了。。那么我就排除了 rowFound["BuyNum"] = null的情况,,现在问题很简单了。。rowFound["BuyNum"]中 "BuyNum"这个字段肯定存在...

相似回答