在C#中操作Excel也做了好久了,最近正在做个程序,遇到个问题。
我需要在Mdi窗体中打开一个或多个嵌入Excel文档的窗体,然后获取它的Application还有WorkSheet啥的,传到另外的一个Mdi子窗体中对这个Application进行操作。简单说,就是打开一个Excel文件,然后在一个单独窗体上对当前打开的文件进行一些操作,比如选中单元格,自动填入一些值什么的等等。
然后现在发现这是可以实现的,但是偶尔会出现莫名其妙的错误,像COMException之类“HRESULT:XXXXXXXXX”,或者报“类 Range 的 Select 方法无效”特别是同时打开多个Excel文件的时候,而有时却工作正常。打开一个Excel文档的时候出现概率比较少,但是操作比较快的时候也会出现异常。
补充下,我是用WebBrowser嵌入Excel实现的,在WebBrowser控件的DocumentCompleted事件中获取Excel的Application,可能这个事件加载比较慢,但是一旦这个事件发生以后,这个Application的引用应该就获得了,和我之后的操作速度顺序没有关系了呀。
不知道在另一个窗体操作Excel的Application时候需要注意些什么,才能避免这个异常?我感觉好像是切换嵌入Excel文件窗体的时候,全局变量中保存的WorkSheet可能不是界面显示的那个Sheet,所以报错?感觉很奇怪,时好时坏的,不知是否需要做些同步什么的?
有没有人做过,给些建议吧,谢谢!
我需要在Mdi窗体中打开一个或多个嵌入Excel文档的窗体,然后获取它的Application还有WorkSheet啥的,传到另外的一个Mdi子窗体中对这个Application进行操作。简单说,就是打开一个Excel文件,然后在一个单独窗体上对当前打开的文件进行一些操作,比如选中单元格,自动填入一些值什么的等等。
然后现在发现这是可以实现的,但是偶尔会出现莫名其妙的错误,像COMException之类“HRESULT:XXXXXXXXX”,或者报“类 Range 的 Select 方法无效”特别是同时打开多个Excel文件的时候,而有时却工作正常。打开一个Excel文档的时候出现概率比较少,但是操作比较快的时候也会出现异常。
补充下,我是用WebBrowser嵌入Excel实现的,在WebBrowser控件的DocumentCompleted事件中获取Excel的Application,可能这个事件加载比较慢,但是一旦这个事件发生以后,这个Application的引用应该就获得了,和我之后的操作速度顺序没有关系了呀。
不知道在另一个窗体操作Excel的Application时候需要注意些什么,才能避免这个异常?我感觉好像是切换嵌入Excel文件窗体的时候,全局变量中保存的WorkSheet可能不是界面显示的那个Sheet,所以报错?感觉很奇怪,时好时坏的,不知是否需要做些同步什么的?
有没有人做过,给些建议吧,谢谢!
多个文档切换后不正常;嵌入的excel已关闭,外部的excel文档也都被关闭了。
不太好使。