void CAddin1App::Test()
{
try
{
CXlComWorkbooks books(this->GetWorkbooks());
long lCount = books.GetCount();
CComVariant varItem;
CXlComWorkbook book;
bool bOpen = false;
for (long lIndex=1;lIndex <= lCount;++lIndex)
{
varItem = lIndex;
book.AttachDispatch(books.GetItem(varItem));
if (book.GetName() == "testfile.xls")
{
AfxMessageBox("the testfile.xls already open");
bOpen = true;
break;
}
}
CComVariant vDefault(DISP_E_PARAMNOTFOUND,VT_ERROR);
//如果没有打开
if (bOpen == false)
{
book.AttachDispatch(books.Open("C:\\testfile.xls",
vDefault,vDefault,vDefault,vDefault,vDefault,vDefault,vDefault,vDefault,
vDefault,vDefault,vDefault,vDefault,vDefault,vDefault));
}
//读数据
//.........
//如果是刚打开的则关闭,否则不关闭
if (bOpen == false)
{
book.Close(vDefault,vDefault,vDefault);
}
}
catch (...)
{
AfxMessageBox("Error");
}
}
本文介绍了一种使用C++检查并根据情况打开或关闭指定Excel文件的方法。通过遍历已打开的工作簿,如果找到了名为“testfile.xls”的文件,则显示消息框提示文件已打开;若未找到,则尝试打开该文件,并在操作完成后关闭它(如果之前未打开)。此过程通过COM接口实现。
6534

被折叠的 条评论
为什么被折叠?



