请问如何正确操作EXCEL?

忠向 2005-04-06 11:35:06
用VC操作EXCEL:把一些数据输出到EXCEL表格中,供用户查看使用,不要求在程序退出时候保存EXCEL中的数据。

我的问题是:
如果在主程序退出以后再关闭EXCEL,EXCEL进程能够正常退出;反之,如果我在主程序未退出时候,关闭EXCEL,进程总是报错,当然关闭EXCEL是在主程序对EXCEL输出数据完成以后。

请专家指点,谢谢
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
忠向 2005-04-14
  • 打赏
  • 举报
回复
高手出来帮帮我呀!
忠向 2005-04-11
  • 打赏
  • 举报
回复
用现成的控件?其实使用的不就是EXCEL的控件吗?
我使用CLASSWIZARD 导入EXCEL的导出类就可以正常退出的,但是使用import 就出错,真是郁闷
arden1019 2005-04-08
  • 打赏
  • 举报
回复
我倒是建议你找一些现成的activeX 来控制显示excel。
arden1019 2005-04-08
  • 打赏
  • 举报
回复
流点儿汉先......

哥们,小弟对ATL不熟哈哈。

并不了解它是怎么和接口进行通信的,它是怎么申请和中断接口连接的。
应该不是excel的问题,excel本身的COM接口应该是安全的。既然出了无法捕捉的错误,应该是你操作顺序有问题。要不去vc版问问那里的大大?

很想帮你,回头恶补下ATL..
忠向 2005-04-07
  • 打赏
  • 举报
回复
大家没有耐心看?
:(
忠向 2005-04-07
  • 打赏
  • 举报
回复
另外,由于使用CComQIPtr,在函数的末尾没有调用几个接口的release函数
忠向 2005-04-07
  • 打赏
  • 举报
回复
try
{
//app指向EXCEL App


CComQIPtr<Excel::Workbooks> books = app->GetWorkbooks();
CComQIPtr<Excel::_Workbook> book = books->Add();
CComQIPtr<Excel::Sheets> sheets = book->GetSheets();
CComQIPtr<Excel::_Worksheet> sheet = sheets->GetItem(1L);;
CComQIPtr<Excel::Range> range;
....//操作EXCEL

}
catch(_com_error &e)
{
CString msg;
msg.Format("[%s]%s", (LPCSTR)e.Source(), (LPCSTR)e.Description());
AfxMessageBox(msg);
}

一切正常完成,就是在关闭打开的EXCEL以后,报错,当然已经超出函数范围无法捕捉异常了,提示错误是“内存不可read”,但是如果主程序退出以后,关闭EXCEL,就没有这个问题
arden1019 2005-04-07
  • 打赏
  • 举报
回复
抱什么错?
你退出代码贴出来看看

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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