首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#访问Excel有关问题

2012-10-20 
c#访问Excel问题我有一个用于数据导入的页面,功能是由用户上传一个excel文件,将内容导入到数据库中,程序运

c#访问Excel问题
我有一个用于数据导入的页面,功能是由用户上传一个excel文件,将内容导入到数据库中,程序运行一切正常。
但是现在每隔一两天都会出现一次问题:
未指定的错误 在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)

这时重启一次IIS后就会好起来了,推测可能是读入数据后没有释放完资源导致的,但是自我感觉已经把该释放的都释放了。
下面是读取excel文件的代码:

C# code
// excelDB 是Excel文件名DataSet ds = new DataSet();string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelDB + ";Extended Properties=Excel 8.0;";using (OleDbConnection OleDB = new OleDbConnection(strCon)){    OleDB.Open();    OleDbDataAdapter OleDat = new OleDbDataAdapter("select * from [Sheet1$]", OleDB);    OleDat.Fill(ds);    OleDat.Dispose();    OleDB.Close();}File.Delete(excelDB);


[解决办法]
OleDbDataAdapter.Fill,OleDbConnection无需Open和Close 

不过看你的代码,似乎不是释放资源的问题
[解决办法]
1楼的解释是对的,如果用DataAdapter,默认情况下,连接关闭的时候,适配器会自动open,读取数据完毕后,再close。

这一句是没有必要的其实:
OleDat.Dispose();

这种情况属于创建连接时内部错误。下次遇到后,看能不能把堆栈信息贴出来?
[解决办法]
try
{
}
catch
{}
finilay
{
}
防止出现异常有资源放不了

我推测是文件上传的问题,没找到文件所致,检查一下文件是否存在
[解决办法]
楼主 本人也在做相关问题,但是 我要求的是 绑定到dategridview中, 能加我QQ 教下我么
[解决办法]
看错误堆栈,出错是在Open那句,去掉Open和Close行吗?
C# code
// excelDB 是Excel文件名DataSet ds = new DataSet();string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelDB + ";Extended Properties=Excel 8.0;";using (OleDbConnection OleDB = new OleDbConnection(strCon)){    //OleDB.Open();    OleDbDataAdapter OleDat = new OleDbDataAdapter("select * from [Sheet1$]", OleDB);    OleDat.Fill(ds);    //OleDat.Dispose();    //OleDB.Close();}File.Delete(excelDB);
[解决办法]
应该是权限的问题,你可能在最近一天把excel所在目录的写入权限干掉了,建议你手动设置excel所在目录为everyone可写!
[解决办法]
光是你给的这点提示看不出来问题的
[解决办法]
DDDD
[解决办法]
这个是.net 的BUG反正很多人都释放不了的!
[解决办法]
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection

这句提示是否有帮助,你是不是默认禁用掉了连接池?
[解决办法]
C# code
string strCon = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelDB + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1";
[解决办法]
ConnString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" + filepath + "; Extended Properties=\"Excel 8.0; HDR=No; IMEX=1;\""; 

string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Excels\\ScoreInfo.xls;Extended Properties=\"Excel 11.0;HDR=Yes;IMEX=1;\""; 
检查系统日志,还有资源占用情况

热点排行