Excel 2003 读取时出错 excel2003 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我最讨厌的就是去读取excel的数据了,特别是用ole的方式读取excel有很多bug,2003里面,2007里面我没试过,反正到了2007的版本的时候,我基本上放弃了excel的直接读取,我都要求别人手动将excel转换成txt,我再读取的。我想问下,你写的程序是bs的,还是cs的,因为你的这几个异常全都都是在oleconnection构造的时候出现的。如果是bs的,那么我要确保你的读取操作到底是在服务端的代码还是客户端的代码上执行的,如果是客户端的代码,比如某些ocx上,那么就要求客户端也要安装provider了。如果是cs的,那么你的读取时在客户端还是服务端,因为你只在服务端安装了provider 谢谢 jy251 的回复!这个问题从表面上来看已经解决了,因为客户已经几天没有发生过这种问题了!然后回答你的问题:1. 这个程序是BS版的,客户的Excel是从另外一个软件里导出的,而且只支持Excel20032. 异常确实全部都是从OledbConnection抛出的,在服务器端执行的,因为客户是企业内网,而且一个excel的大小是小于200KB的,所以我都是把Excel上传到服务器上然后在进行excel的读取3. Provider本身没有问题,因为是有时成功,有时失败的经过几天的分析,得到了如下结论:1. 发生问题时,IISReset可以解决,所以问题就极有可能发生在IIS上面,然后客户这次出问题时,我没有做IISReset而是做了IIS的垃圾回收,然后在导入Excel,成功了2. 所以感觉是我们部署的.net 项目在iis中做的垃圾回收不好,从而可能导致iis假死的情况,所以导致excel导入的不正常,然后我做了6个时间点的垃圾回收,然后问题基本上不出现了3. 我的方案里也有不太好的一面,就是做了垃圾回收之后,页面好像需要重新做编译一样,但是打开一次页面之后,后面在打开同页面就会很快 不推荐用oledb读取excel确实很容易出错。尝试ocw或者专门的库吧NPoi之类的 谢谢你,以后会考虑Oledb之外的,因为这个项目里一开始用的是oledb,读取很方便,而且在本机环境和测试环境没有出现过问题,所以就延用了,然后不晓得生产环境会出现这个问题。以前做Java的时候用过jxl和poi,感觉还是很好的。 谢谢你,我直接把底层读Excel的方法换成了NPOI了,目前运行还算正常,客户正在跟踪的了,希望不要在报出问题了。 C# 操作access数据库 常用操作代码 如何实现“方法体”和“窗体”之间通信的功能【up有分】 关于对网站应用程序授权的问题 C#如何通过鼠标控制无标头窗体! 如何获取IntPtr 指向的数据 c#的登录代码怎么打啊 一个星期了,没人回答----dataset怎么导出dbf 如果使用DirectSound 实现录音功能。希望有C#源码。 如何让CHECKBOXLIST的某几项不可选呢,各位帮忙解决一下,谢谢! 为什么我装了msdn2003却用不了? 正则表达式的写法 请教 “IIS5.1”能发布“.Net4.5的ASP.NET网站”吗?
excel有很多bug,2003里面,2007里面我没试过,反正到了2007的版本的时候,我基本上放弃了excel的直接读取,我都要求别人手动将excel转换成txt,我再读取的。我想问下,你写的程序是bs的,还是cs的,因为你的这几个异常全都都是在oleconnection构造的时候出现的。如果是bs的,那么我要确保你的读取操作到底是在服务端的代码还是客户端的代码上执行的,如果是客户端的代码,比如某些ocx上,那么就要求客户端也要安装provider了。如果是cs的,那么你的读取时在客户端还是服务端,因为你只在服务端安装了provider
然后回答你的问题:
1. 这个程序是BS版的,客户的Excel是从另外一个软件里导出的,而且只支持Excel2003
2. 异常确实全部都是从OledbConnection抛出的,在服务器端执行的,因为客户是企业内网,而且一个excel的大小是小于200KB的,所以我都是把Excel上传到服务器上然后在进行excel的读取
3. Provider本身没有问题,因为是有时成功,有时失败的经过几天的分析,得到了如下结论:
1. 发生问题时,IISReset可以解决,所以问题就极有可能发生在IIS上面,然后客户这次出问题时,我没有做IISReset而是做了IIS的垃圾回收,然后在导入Excel,成功了
2. 所以感觉是我们部署的.net 项目在iis中做的垃圾回收不好,从而可能导致iis假死的情况,所以导致excel导入的不正常,然后我做了6个时间点的垃圾回收,然后问题基本上不出现了
3. 我的方案里也有不太好的一面,就是做了垃圾回收之后,页面好像需要重新做编译一样,但是打开一次页面之后,后面在打开同页面就会很快
尝试ocw或者专门的库吧NPoi之类的
谢谢你,以后会考虑Oledb之外的,因为这个项目里一开始用的是oledb,读取很方便,而且在本机环境和测试环境没有出现过问题,所以就延用了,然后不晓得生产环境会出现这个问题。以前做Java的时候用过jxl和poi,感觉还是很好的。