是一个从.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
/// 根据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
但是实在找不出错误在哪里?”
好像都会现代码行在哪里会出现这样的错误的,你可以看一下具体的错误信息,然后根据相应的错误信息本地debug,单步执行,你至少要保证本地的环境是能通过并且能运行的。
{
Console.WriteLine(ex.Message);//这句话改成Reponse.Write(ex.Message) 看看那句话引起的 }
finally
=======