佚名通过本文主要向大家介绍了matlab读取excel数据,java读取excel,c#读取excel,matlab 读取excel,python读取excel等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 读取excel,结束时任务管理器无法关闭excel
描述:
解决方案1:
描述:
应该是变量没有释放完导致无法完全关闭
代码如下:
CString strPathName;
CFileDialog *pOpenFile=new CFileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY
| OFN_OVERWRITEPROMPT, "excel(*.xls)|*.xls");
ASSERT(pOpenFile!=NULL);
if (pOpenFile->DoModal() == IDOK)
{
OnButtonClear();
strPathName=pOpenFile->GetPathName();
}
else
return;
_Application _app;
_Workbook book;
_Worksheet sheet;
Workbooks books;
Worksheets sheets;
Range range;
Range usedRange;
if(!_app.CreateDispatch("Excel.Application",NULL))
{
MessageBox(_T("Excel 建立失败"),_T("信息提示"));
return;
}
LPDISPATCH lpDisp;
//_app.SetVisible(TRUE);
//_app.SetUserControl(TRUE);
lpDisp=_app.GetWorkbooks();
books.AttachDispatch(lpDisp);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
lpDisp=books.Open(strPathName,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional);
book.AttachDispatch(lpDisp);
lpDisp=book.GetWorksheets();
sheets.AttachDispatch(lpDisp);
//sheet.AttachDispatch(sheets.GetItem(COleVariant("sheet1")),TRUE);
lpDisp = book.GetActiveSheet();
sheet.AttachDispatch(lpDisp);
//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
lpDisp=sheet.GetUsedRange();
usedRange.AttachDispatch(lpDisp);
int nRow,nCol;
//row
lpDisp=usedRange.GetRows();
range.AttachDispatch(lpDisp);
nRow=range.GetCount();
//col
lpDisp=usedRange.GetColumns();
range.AttachDispatch(lpDisp);
nCol=range.GetCount();
int i,j;
COleVariant vResult;
for(i=2;i<=nRow;i++)
{
for(j=1;j<=nCol;j++)
{
lpDisp=sheet.GetCells();
range.AttachDispatch(lpDisp);
range.AttachDispatch(range.GetItem(COleVariant(long(i)),
COleVariant(long(j))).pdispVal);
vResult=range.GetValue2();
m_LNode.AddLNode(m_pHead[j-1],vResult.dblVal);
}
m_nSum++;
}
//release
lpDisp->Release();
usedRange.ReleaseDispatch();
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
_app.ReleaseDispatch();
book.Close(covOptional,COleVariant(strPathName),covOptional);
books.Close();
_app.Quit();
解决方案1:
试试
Excel_App.Quit();
Excel_book.SetSaved(true);
Excel_books.Close();
Excel_range.ReleaseDispatch();
Excel_sheet.ReleaseDispatch();
Excel_sheets.ReleaseDispatch();
Excel_book.ReleaseDispatch();
Excel_books.ReleaseDispatch();
Excel_App.ReleaseDispatch();