代码如下
if(!AfxOleInit())
{
MessageBox(_T("无法初始化COM的动态连接库"));
return;
} CString FilePath=FileDlg.GetPathName();
ExcelApp.CreateDispatch(_T("Excel.Application"), NULL);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
ExcelApp.put_Visible(TRUE); Books.AttachDispatch(ExcelApp.get_Workbooks()); LPDISPATCH lpDisp=Books.Open((LPCTSTR)FilePath,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
Book.AttachDispatch(lpDisp);
Sheets.AttachDispatch(Book.get_Worksheets()); //得到Worksheets
m_SheetNum=Sheets.get_Count();
VARIANT vtemp;
_bstr_t btemp;
char ctemp[40];
long count; m_pTagPoint=new char *[m_SheetNum];
Num=new long[m_SheetNum];
for(int j=0;j<m_SheetNum;j++)
{
Sheet.AttachDispatch(Sheets.get__Default(VT(j+1))); //得到sheet1
CString cs=Sheet.get_Name();
strcpy(ctemp,(LPSTR)(LPCTSTR)cs); CRange usedRange;
usedRange.AttachDispatch(Sheet.get_UsedRange());
Range.AttachDispatch(usedRange.get_Rows()); Num[j]=Range.get_Count(); Range.AttachDispatch(Sheet.get_Cells()); m_pTagPoint[j]=new char[(Num[j]+1)*40];
memcpy((void *)m_pTagPoint[j],ctemp,40); for(int i=1;i<Num[j];i++)
{
vtemp=Range.get__Default(VT(i),VT(1));
btemp=(_bstr_t)vtemp;
strcpy(m_pTagPoint[j]+40*i,btemp);
} Range.ReleaseDispatch();
usedRange.ReleaseDispatch();
Sheet.ReleaseDispatch();
}
Sheets.ReleaseDispatch();
Book.ReleaseDispatch();
Book.Close(covOptional,covOptional,covOptional);
Books.ReleaseDispatch();
Books.Close();
ExcelApp.Quit();
ExcelApp.ReleaseDispatch();
着色的这段代码如果隐掉的话就不会有这种情况发生,请各位高手指点一二
if(!AfxOleInit())
{
MessageBox(_T("无法初始化COM的动态连接库"));
return;
} CString FilePath=FileDlg.GetPathName();
ExcelApp.CreateDispatch(_T("Excel.Application"), NULL);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
ExcelApp.put_Visible(TRUE); Books.AttachDispatch(ExcelApp.get_Workbooks()); LPDISPATCH lpDisp=Books.Open((LPCTSTR)FilePath,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);
Book.AttachDispatch(lpDisp);
Sheets.AttachDispatch(Book.get_Worksheets()); //得到Worksheets
m_SheetNum=Sheets.get_Count();
VARIANT vtemp;
_bstr_t btemp;
char ctemp[40];
long count; m_pTagPoint=new char *[m_SheetNum];
Num=new long[m_SheetNum];
for(int j=0;j<m_SheetNum;j++)
{
Sheet.AttachDispatch(Sheets.get__Default(VT(j+1))); //得到sheet1
CString cs=Sheet.get_Name();
strcpy(ctemp,(LPSTR)(LPCTSTR)cs); CRange usedRange;
usedRange.AttachDispatch(Sheet.get_UsedRange());
Range.AttachDispatch(usedRange.get_Rows()); Num[j]=Range.get_Count(); Range.AttachDispatch(Sheet.get_Cells()); m_pTagPoint[j]=new char[(Num[j]+1)*40];
memcpy((void *)m_pTagPoint[j],ctemp,40); for(int i=1;i<Num[j];i++)
{
vtemp=Range.get__Default(VT(i),VT(1));
btemp=(_bstr_t)vtemp;
strcpy(m_pTagPoint[j]+40*i,btemp);
} Range.ReleaseDispatch();
usedRange.ReleaseDispatch();
Sheet.ReleaseDispatch();
}
Sheets.ReleaseDispatch();
Book.ReleaseDispatch();
Book.Close(covOptional,covOptional,covOptional);
Books.ReleaseDispatch();
Books.Close();
ExcelApp.Quit();
ExcelApp.ReleaseDispatch();
着色的这段代码如果隐掉的话就不会有这种情况发生,请各位高手指点一二
CApplication ExcelApp; //代表Excel服务器
CWorkbook Book; //一个表
CWorkbooks Books; //整个服务器里所有的表
CWorksheet Sheet; //一个表单
CWorksheets Sheets; //所有的表单
CRange Range;
这几个变量改为全局变量但是还是有问题