c#,提示未将对象引用到对象的实例。怎么回事?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#,提示未将对象引用到对象的实例。怎么回事?相关的知识,希望对你有一定的参考价值。

[DllImport("User32.dll", CharSet = CharSet.Auto)]

using System.Runtime.InteropServices;

public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
private void button3_Click(object sender, EventArgs e)


//导出到execl
try

//没有数据的话就不往下执行
if (dataGridView1.Rows.Count == 0)
return;
//实例化一个Excel.Application对象
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
//Excel.Application app = new Excel.ApplicationClass();
//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
excel.Visible = false;

//新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
excel.Application.Workbooks.Add(true);
//生成Excel中列头名称
for (int i = 0; i < dataGridView1.Columns.Count; i++)

excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;

//把DataGridView当前页的数据保存在Excel中
for (int i = 0; i < dataGridView1.Rows.Count ; i++)

for (int j = 0; j < dataGridView1.Columns.Count; j++)

if (dataGridView1[j, i].ValueType == typeof(string))

excel.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString();

else

excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();




//设置禁止弹出保存和覆盖的询问提示框
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;

//保存工作簿
excel.Application.Workbooks.Add(true).Save();
//保存excel文件
excel.Save("D:" + "\\KKHMD.xls");

//确保Excel进程关闭
excel.Quit();
excel = null;

System.Diagnostics.Process.GetProcessesByName("excel");

IntPtr t = new IntPtr(excel.Hwnd);
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();


第一行和第二行写反了。
排除后5行后,问题消失,不过就没法关闭excel进程了

参考技术A 同意楼上的说法,你打一下断点,一步一步执行看那个值是空的,肯定是某个值没拿到,就为空了,才会出现这样的问题! 参考技术B 最后一个结束进程的时候不加判断吗?如果没有获取到这个进程话下面就报错了。
if(p!=null)

p.kill();
p.dispose();

试一下,我没试你这个代码。
参考技术C dataGridView1[j, i].Value 可能为null,无法转换为toString() 参考技术D 引用了一个空对象并对这个空对象操作。
你用vs调试的时候不是会弹出来提示的么?看看具体哪一行除了问题。再看哪个对象是null的本回答被提问者采纳

c# vs2010连接SQLServer2008时出现“未将对象引用设置到对象的实例。”

代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Web.Security;
using System.IO;

namespace test

public partial class teat1 : System.Web.UI.Page

protected void Page_Load(object sender, EventArgs e)




protected void SqlDataSource1_Selecting1(object sender, SqlDataSourceSelectingEventArgs e)




protected void Button1_Click(object sender, EventArgs e)


string name;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Data Source=userswo-remuhgn;Initial Catalog=myNewsDB;Persist Security Info=True;User ID=myNew;Password=12345"].ToString());
con.Open();
SqlCommand newCom = new SqlCommand("SELECT N_ID,N_name,N_pwd FROM admin",con);
SqlDataReader dr=newCom.ExecuteReader();
dr.Read();
name = dr["N_name"].ToString();
Label1.Text = name;
con.Close();



麻烦高手看一下哪里有问题啊
代码没错但是就是每次一运行就出现“未将对象引用设置到对象的实例”

参考技术A string name;
string Constr=ConfigurationManager.ConnectionStrings["这个是webconfig里的name"].ConnectionString;
SqlConnection con = new SqlConnection(Constr);
con.Open();
SqlCommand newCom = new SqlCommand("SELECT N_ID,N_name,N_pwd FROM admin",con);
SqlDataReader dr=newCom.ExecuteReader();
dr.Read();
name = dr["N_name"].ToString();
Label1.Text = name;
con.Close();
本回答被提问者采纳
参考技术B SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Data Source=userswo-remuhgn;Initial Catalog=myNewsDB;Persist Security Info=True;User ID=myNew;Password=12345"].ToString());
改成
SqlConnection con = new SqlConnection("Data Source=userswo-remuhgn;Initial Catalog=myNewsDB;Persist Security Info=True;User ID=myNew;Password=12345");
或者
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["WebConfig文件中,对应的Key"]);

以上是关于c#,提示未将对象引用到对象的实例。怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

提示 未将对象引用设置到对象的实例 怎么处理?

foreach提示未将对象引用设置到对象的实例

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

C#自定义方法从dataset读到数组总提示未将对象引用设置到对象的实例 貌似是初始化的问题

this.spatialToolStrip1.Map = null;未将对象引用设置到对象的实例

sqlserver安装时失败,提示遇到以下错误:未将对象引用设置到对象的实例。这个是啥意思?要怎么解决?