Oledb Excel 读取失败

sharpblade 2011-03-24 09:58:16
使用oledb的方式读取使用excel数据,大部分时间使用正常,但有时会发生不能读取的情况,一旦不能读取,整个系统中通过oledb读取excel都不行了。
网上也查了一下,应该不是权限的问题。当不能读取时,重启机器可解决问题,但不是长久之计。
怀疑类似于文件被打开,卡在系统中没有关闭,而无法读取造成的。
也检查了一下读取excel的代码,都有写释放的代码。

各位能否给点解决建议?
...全文
385 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
站在高岗上 2013-06-27
  • 打赏
  • 举报
回复
我的问题只出现在服务器,本地系统一切正常。 不能读取的情况也是偶尔出现,一旦出现,一段时间内将一直不能读取。 我怀疑是oledb驱动有问题
站在高岗上 2013-06-27
  • 打赏
  • 举报
回复
我的问题和楼主一样 错误信息如下: No error message available, result code: E_UNEXPECTED(0x8000FFFF). 我也不知道该怎么解决,求科普
段传涛 2011-03-26
  • 打赏
  • 举报
回复
这个很是奇怪了。有没有监视到,字符超长的。
可以做下限制。
1,保证连接池用完就关闭
2,加超时限制
3,指定宽度
sharpblade 2011-03-25
  • 打赏
  • 举报
回复
月底结分
sharpblade 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dongxinxi 的回复:]
检查是否有资源未能释放,记录异常
一旦失败,整个系统OleDb读取都会失败?Microsoft.Jet.OLEDB.4.0引擎暴了?

Microsoft.Jet.OLEDB.4.0对x64位支持不是很好,有时候会出问题,如果是x64
在项目的属性中,把“生成”中的“目标平台”从“Any CPU”改成“x86”,再重新编译就可以了。
[/Quote]


差不多就这个情况,一旦失败,整个都不行,暂时只能重启服务器。
好像不是64位的。
anbam 2011-03-24
  • 打赏
  • 举报
回复
给出code
给出exception 信息,方便大家分析
sharpblade 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 net_lover 的回复:]
读取的时候可能是出现了错误,然后OleDbConnection就没有关闭。你应该确保无论出现什么错误,都保证OleDbConnection关闭
[/Quote]

都写了finally,做了close(), dispose(),就能保证都关闭了?
如果这样,我就把代码再查查是否有漏的地方。
zxhx 2011-03-24
  • 打赏
  • 举报
回复
最好跟踪一下异常发生的原因
修改代码,保证发生异常后能及时关闭所有连接并释放资源~
孟子E章 2011-03-24
  • 打赏
  • 举报
回复
读取的时候可能是出现了错误,然后OleDbConnection就没有关闭。你应该确保无论出现什么错误,都保证OleDbConnection关闭
sharpblade 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 porschev 的回复:]
如果确定不是权限问题。。

那就要自己仔细检查代码了。。。
[/Quote]

权限会偶尔影响到读取吗?
我的情况是大部分时间正常。
有时就不行了。
你也知道但读取出错时,系统给的提示,总是让人崩溃。
恩,我会再查查代码,主要查看是否有释放,对吧?
sharpblade 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]
你的EXCEL文件放在哪儿了?

不能放在你的网站的根目录下。

那样容易悲剧 放在别的盘中 IIS 要重新编译整个网站的。。

我以前项目就是这个问题。。

你要GC
释放相关资源
[/Quote]


放在子目录下,大部分时间都正常。
cjh200102 2011-03-24
  • 打赏
  • 举报
回复
可能是代码的问题
amandag 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]
不能放在你的网站的根目录下。

那样容易悲剧
[/Quote]

同悲过
porschev 2011-03-24
  • 打赏
  • 举报
回复

如果确定不是权限问题。。

那就要自己仔细检查代码了。。。
子夜__ 2011-03-24
  • 打赏
  • 举报
回复
你的EXCEL文件放在哪儿了?

不能放在你的网站的根目录下。

那样容易悲剧 放在别的盘中 IIS 要重新编译整个网站的。。

我以前项目就是这个问题。。

你要GC
释放相关资源
  • 打赏
  • 举报
回复
检查是否有资源未能释放,记录异常
一旦失败,整个系统OleDb读取都会失败?Microsoft.Jet.OLEDB.4.0引擎暴了?

Microsoft.Jet.OLEDB.4.0对x64位支持不是很好,有时候会出问题,如果是x64
在项目的属性中,把“生成”中的“目标平台”从“Any CPU”改成“x86”,再重新编译就可以了。
sharpblade 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jason_dct 的回复:]
引用 9 楼 sharpblade 的回复:
引用 7 楼 net_lover 的回复:
读取的时候可能是出现了错误,然后OleDbConnection就没有关闭。你应该确保无论出现什么错误,都保证OleDbConnection关闭


都写了finally,做了close(), dispose(),就能保证都关闭了?
如果这样,我就把代码再查查是否有漏的地方。

读的数据量大吗?……
[/Quote]


不算太大,一般文件也就几百k,大点的1,2m。
记录数,也就3,4千行。

目录一般是什么问题?

1楼也提到了目录。
我的情况是,大部分时间都可以的。不知道什么原因就不行了。
很有可能就是连接没有正常关闭,如果没有正常关闭可以补救吗?总不能老是重启。
所以上面几个人说,可能哪个地方代码有问题,我是比较倾向,
当然我想获得更多的建议。
段传涛 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sharpblade 的回复:]
引用 7 楼 net_lover 的回复:
读取的时候可能是出现了错误,然后OleDbConnection就没有关闭。你应该确保无论出现什么错误,都保证OleDbConnection关闭


都写了finally,做了close(), dispose(),就能保证都关闭了?
如果这样,我就把代码再查查是否有漏的地方。
[/Quote]
读的数据量大吗? 考虑 加个 CommandTimeout那?
也要看看 你的目录问题
pretyjfh 2011-03-24
  • 打赏
  • 举报
回复
都是大婶级的 有意思

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧