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进程了
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();
麻烦高手看一下哪里有问题啊
代码没错但是就是每次一运行就出现“未将对象引用设置到对象的实例”
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#,提示未将对象引用到对象的实例。怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章
C#自定义方法从dataset读到数组总提示未将对象引用设置到对象的实例 貌似是初始化的问题