为什么调用了Close()后,进程还是没有关闭的?
这个程序是我参照这里做出来的:http://yhchinabest.blog.163.com/blog/static/2900648520077331548893/
不是为什么。。我调用了Close()后,用进程管理器看,Excel还在运行的,有高手可以解释下并给个方法我关了它么?
如果要源码可以到这里拿
www.126.com
帐号:CSDNtest1
密码:CSDNtest
代码主要如下:
_Application oApp; //Excel进程对象
Workbooks oWorkbooks; //工作簿集合
_Workbook oWorkbook; //工作簿对象
Worksheets oWorksheets; //工作表集合
_Worksheet oWorksheet; //工作表
Range oRange; //代表某一单元格、某一行、某一列、某一选定区域
void CMy1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString str1 = "c:\\CJWL081.xls";
char *buf1 = str1.GetBuffer(str1.GetLength());
NewApplication();
Open(buf1);
Read(1);
Close();
oWorksheet.ReleaseDispatch();
oApp.ReleaseDispatch();
oRange.ReleaseDispatch();
oWorkbooks.ReleaseDispatch();
oWorkbook.ReleaseDispatch();
oWorksheets.ReleaseDispatch();
CannotFindN.RemoveAll();
SearchName1.RemoveAll();
SearchName2.RemoveAll();
Name.RemoveAll();
FetionID.RemoveAll();
Telephone.RemoveAll();
Telephone1.RemoveAll();
}
void CMy1Dlg::NewApplication()
{
if (!oApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
oWorkbooks=oApp.GetWorkbooks(); //获取当前工作簿集合
}
void CMy1Dlg::Open(char *pFilename)
{
oWorkbook=oWorkbooks.Open(pFilename,vtMissing,vtMissing,vtMissing,vtMissing, //打开一个Excel文件
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); //并指定其为当前工作簿
}
void CMy1Dlg::Read(int Value)
{
oWorksheets=oWorkbook.GetWorksheets(); //获得工作表集合
oWorksheet=oWorksheets.GetItem(_variant_t((long)1)); //假定只有一张表
oRange=oWorksheet.GetRange(_variant_t("A1"),vtMissing); //选择第一列
_variant_t Value2=oRange.GetItem(_variant_t((long)1),_variant_t((long)1));
CString str = (LPCTSTR)_bstr_t(Value2);
MessageBox(str);
}
void CMy1Dlg::Close()
{
oWorkbook.Close(vtMissing,vtMissing,vtMissing); //关闭当前工作簿
oApp.Quit(); //退出进程
}