关于C#中多个窗体操作Excel的问题

k7ta 2009-07-11 05:46:20
在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,所以报错?感觉很奇怪,时好时坏的,不知是否需要做些同步什么的?
有没有人做过,给些建议吧,谢谢!
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
supercube2 2010-06-01
  • 打赏
  • 举报
回复
也遇到了同样的问题。
多个文档切换后不正常;嵌入的excel已关闭,外部的excel文档也都被关闭了。
不太好使。
k7ta 2009-07-14
  • 打赏
  • 举报
回复
发现几个窗体之间几次切换以后就会莫名其妙的异常,感觉WebBrowser显示的Excel显示也不太正常,但是在另一个独立的窗体上填充当前激活的Cell也可以成功,但是不能调用select和activate不知是什么原因
redleafe 2009-07-12
  • 打赏
  • 举报
回复
关注
k7ta 2009-07-12
  • 打赏
  • 举报
回复
再试了几次,发现是操作一个Excel文档,然后激活另外一个嵌入Excel文档的窗体(仅仅是选中这个Mdi窗体,没有对其中的Excel文档进行操作),然后操作对应的WorkBook又报COMException的异常,猜想可能是需要先Activate,调用Activate函数,还是异常,晕死。
k7ta 2009-07-12
  • 打赏
  • 举报
回复
自己顶
k7ta 2009-07-11
  • 打赏
  • 举报
回复
试了一天了,想上来问问有没有人做过窗体之间操作Excel的,交流下经验^_^
thinkingforever 2009-07-11
  • 打赏
  • 举报
回复
Excel开发确实麻烦,多测试几次估计就能找到规律了,可能是活动WorkSheet,活动cell在来回切换的时候没有弄好吧

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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