是一个从.xls文件中的数据导入数据到sqlserver2008中的项目.项目在本地可以正常执行.在IIS 6.0上也可以正常执行.不报错。 不过最近更新了IIS7.5,放到7.5上各种报错.一段一段的试,发现是一执行这段代码就报错。        /// <summary>
        /// 根据excel表格返回一个DataSet
        /// </summary>
        /// <param name="Path">Excel文件的路径</param>
        /// <returns>DataSet</returns>
        public DataSet ExcelToDS(string Path)
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);
            DataSet ds = null;
            try
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 
                DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                //包含excel中表名的字符串数组
                string[] strTableNames = new string[dtSheetName.Rows.Count];
                for (int k = 0; k < dtSheetName.Rows.Count; k++)
                {
                    //Encoding gb2312 = Encoding.GetEncoding("gb2312");
                    //Response.ContentEncoding = gb2312;
                    //Encoding utf8 = Encoding.Convert(utf8, gb2312,); 
                    strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                }                DataTable dt = new DataTable();
                //从指定的表明查询数据,可先把所有表明列出来供用户选择
                string strExcel = "select * from [" + strTableNames[0] + "]";
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, conn);
                ds = new DataSet();
                myCommand.Fill(ds, "table1");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            return ds;
        }反正放到IIS 7.5就报错,什么未将对象引用设置到对象的实例。但是实在找不出错误在哪里。  各位巨巨帮忙看下 谢谢了。.netexcelsqlserver

解决方案 »

  1.   

    “什么未将对象引用设置到对象的实例->
    但是实在找不出错误在哪里?”
    好像都会现代码行在哪里会出现这样的错误的,你可以看一下具体的错误信息,然后根据相应的错误信息本地debug,单步执行,你至少要保证本地的环境是能通过并且能运行的。
      

  2.   

    亲们 你们可能没看清楚 在本地和IIS 6.0 完全没问题。注意是完全没问题。只是服务器升级到了IIS7.5   WIN2008系统   部署到了IIS 7.5就报错  未将对象引用到实例。如果本地都报错   那就太好解决了  VS调试一下,估计1次就解决了。放到IIS  怎么调试?
      

  3.   

    难点就是本地不报错,代码我觉得也没错,放到IIS7.5之后 不能调试 却拨错了。。
      

  4.   

    catch 里面搞到异常信息,写日志或者写到一个文件中。然后异常信息贴上来
      

  5.   

                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);//这句话改成Reponse.Write(ex.Message) 看看那句话引起的            }
                finally
    =======