按钮代码如下:
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
LPDISPATCH lpDisp; //接口指针
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch("Excel.Application"))
{
this->MessageBox("不好意思,无法创建Excel应用!");
return;
}
books = app.GetWorkbooks();
lpDisp = books.Open("E:\\H型钢.xls",
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional);
book.AttachDispatch(lpDisp);
sheets=book.GetSheets();
sheet=sheets.GetItem(COleVariant((short)1));
range=sheet.GetRange(COleVariant("A1"),COleVariant("A1"));
COleVariant rValue;
rValue=COleVariant(range.GetValue2());
rValue.ChangeType(VT_BSTR);
this->MessageBox(CString(rValue.bstrVal));
book.SetSaved(TRUE);
app.Quit();
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
LPDISPATCH lpDisp; //接口指针
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!app.CreateDispatch("Excel.Application"))
{
this->MessageBox("不好意思,无法创建Excel应用!");
return;
}
books = app.GetWorkbooks();
lpDisp = books.Open("E:\\H型钢.xls",
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional);
book.AttachDispatch(lpDisp);
sheets=book.GetSheets();
sheet=sheets.GetItem(COleVariant((short)1));
range=sheet.GetRange(COleVariant("A1"),COleVariant("A1"));
COleVariant rValue;
rValue=COleVariant(range.GetValue2());
rValue.ChangeType(VT_BSTR);
this->MessageBox(CString(rValue.bstrVal));
book.SetSaved(TRUE);
app.Quit();
{
this->MessageBox("不好意思,无法创建Excel应用!");
return;
}
总是运行到这个循环里去,弹出方框,我上按照http://xfrog.blogbus.com/logs/24923682.html#cmt
里面做的啊,只不过我的是2003版本的excel,请问大侠我应该做其他的什么操作吗
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
if (CoInitialize(NULL) != S_OK)
{
AfxMessageBox("初始化COM支持库失败!");
return -1;
}试试
BOOL CMydll0302App::InitInstance()
{
// TODO: Add your specialized code here and/or call the base class
CoInitialize(NULL);
if(!AfxOleInit())
{
AfxMessageBox("初始化Ole出错!");
return FALSE;
} CoUninitialize();
return CWinApp::InitInstance();
}
BOOL CMydll0302App::InitInstance()
{
// TODO: Add your specialized code here and/or call the base class
CoInitialize(NULL);if(!AfxOleInit())
{
AfxMessageBox("初始化Ole出错!");
return FALSE;
}CoUninitialize();//这个注释掉看看
return CWinApp::InitInstance();
}