小弟VC中从EXCEL文件中读取信息,读完后,退出EXCEL进程,但是老是不成功!源程序如下:
_Application m_excelApp;
Workbooks m_workbooks;
_Workbook m_workbook;
Sheets m_workSheets;
_Worksheet m_workSheet;
Range m_cells;
CString m_st_sheetName="";
int m_i_workbookNum=0;//多少个workbook,难道一个EXCEL还有多个workbook?????????????
int m_i_workSheetNum=0;//多少个worksheet,一个workbook有多个worksheet int m_i_workbookIndex=0;
int m_i_sheetIndex=0;
int m_i_columnIndex=0;//列下标
int m_i_rowIndex=0;//行下标
int m_i_nullColumn=0;//连续空的列
int m_i_nullRow=0;//连续空的行
int m_i_validField=0; CString m_st_unformatedItemData="";//不合格的格数据,等待利用_TEXT()转化
CString m_st_itemData="";//格数据
_variant_t m_st_itemVariantStr;
BSTR m_st_itemStr; int m_i_totalNum=0;
int m_i_validNum=0; try{
//创建Excel 2000服务器(启动Excel)
if (!m_excelApp.CreateDispatch("Excel.Application",NULL))
{
return FALSE;
} //把WorkBook与m_excelApp关联起来
m_workbooks.AttachDispatch(m_excelApp.GetWorkbooks(),true);
m_workbooks.Open(p_st_fileName,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); m_i_workbookNum=m_workbooks.GetCount();
m_workbook.AttachDispatch(m_workbooks.GetApplication());
//得到Worksheets
m_workSheets.AttachDispatch(m_workbook.GetWorksheets(),true); //得到sheet
m_i_workSheetNum=m_workSheets.GetCount();
for(m_i_sheetIndex=1;m_i_sheetIndex<=m_i_workSheetNum;m_i_sheetIndex++)
{
//得到一个SHEET
m_workSheet.AttachDispatch(m_workSheets.GetItem(_variant_t((long)m_i_sheetIndex)),true);//得到SheetIndex,下标从1开始,等价于下面的字符串
m_st_sheetName=m_workSheet.GetName();//得到Sheet名称 //得到全部Cells,此时,m_cells是cells的集合
m_cells.AttachDispatch(m_workSheet.GetCells(),true);//得到全部的Cells .....处理程序
} //释放对象
m_cells.ReleaseDispatch();
m_workSheet.ReleaseDispatch();
m_workSheets.ReleaseDispatch();
m_workbook.ReleaseDispatch();
m_workbooks.ReleaseDispatch();
m_workbooks.Close();
m_excelApp.Quit();//退出EXCEL进程,为什么无法顺利退出
m_excelApp.ReleaseDispatch(); 在这里,我调用m_excelApp.Quit();这个程序退出,大部分都无法顺利退出excel进程,为什么,请高手指教!!!!
_Application m_excelApp;
Workbooks m_workbooks;
_Workbook m_workbook;
Sheets m_workSheets;
_Worksheet m_workSheet;
Range m_cells;
CString m_st_sheetName="";
int m_i_workbookNum=0;//多少个workbook,难道一个EXCEL还有多个workbook?????????????
int m_i_workSheetNum=0;//多少个worksheet,一个workbook有多个worksheet int m_i_workbookIndex=0;
int m_i_sheetIndex=0;
int m_i_columnIndex=0;//列下标
int m_i_rowIndex=0;//行下标
int m_i_nullColumn=0;//连续空的列
int m_i_nullRow=0;//连续空的行
int m_i_validField=0; CString m_st_unformatedItemData="";//不合格的格数据,等待利用_TEXT()转化
CString m_st_itemData="";//格数据
_variant_t m_st_itemVariantStr;
BSTR m_st_itemStr; int m_i_totalNum=0;
int m_i_validNum=0; try{
//创建Excel 2000服务器(启动Excel)
if (!m_excelApp.CreateDispatch("Excel.Application",NULL))
{
return FALSE;
} //把WorkBook与m_excelApp关联起来
m_workbooks.AttachDispatch(m_excelApp.GetWorkbooks(),true);
m_workbooks.Open(p_st_fileName,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); m_i_workbookNum=m_workbooks.GetCount();
m_workbook.AttachDispatch(m_workbooks.GetApplication());
//得到Worksheets
m_workSheets.AttachDispatch(m_workbook.GetWorksheets(),true); //得到sheet
m_i_workSheetNum=m_workSheets.GetCount();
for(m_i_sheetIndex=1;m_i_sheetIndex<=m_i_workSheetNum;m_i_sheetIndex++)
{
//得到一个SHEET
m_workSheet.AttachDispatch(m_workSheets.GetItem(_variant_t((long)m_i_sheetIndex)),true);//得到SheetIndex,下标从1开始,等价于下面的字符串
m_st_sheetName=m_workSheet.GetName();//得到Sheet名称 //得到全部Cells,此时,m_cells是cells的集合
m_cells.AttachDispatch(m_workSheet.GetCells(),true);//得到全部的Cells .....处理程序
} //释放对象
m_cells.ReleaseDispatch();
m_workSheet.ReleaseDispatch();
m_workSheets.ReleaseDispatch();
m_workbook.ReleaseDispatch();
m_workbooks.ReleaseDispatch();
m_workbooks.Close();
m_excelApp.Quit();//退出EXCEL进程,为什么无法顺利退出
m_excelApp.ReleaseDispatch(); 在这里,我调用m_excelApp.Quit();这个程序退出,大部分都无法顺利退出excel进程,为什么,请高手指教!!!!
app.CreateDispatch("Excel.Application");
app.SetVisible(TRUE);
...
app.SetUserControl(FALSE);
app.Quit();
Application app;
app.CreateDispatch("Excel.Application");
app.SetVisible(TRUE);
...
app.SetUserControl(FALSE);
app.Quit();
Application app;
app.CreateDispatch("Excel.Application");
app.SetVisible(TRUE);
...
app.SetUserControl(FALSE);
app.Quit();把app.SetVisible(TRUE);改成app.SetVisible(FALSE);就不显示了