如何在多文档、使用OLE内嵌Excel的情况下打开已经存在的xls文件?

zhangjyr 2003-10-17 05:15:24
我按msdn的提示想在OLE内嵌Excel的情况下打开已经存在的xls文件,老是出问题,我的代码如下,大家帮我看看好么
CDemoCntrItem* pItem = NULL;
TRY
{
//Get the document associated with this view, and be sure it's
//valid.
CDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

//Create a new item associated with this document, and be sure
//it's valid.
pItem = new CDemoCntrItem(pDoc);
ASSERT_VALID(pItem);

// Get Class ID for Excel sheet.
// This is used in creation.
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Excel.sheet",&clsid)))
//Any exception will do. We just need to break out of the
//TRY statement.
AfxThrowMemoryException();

// Create the Excel embedded item.
if(!pItem->CreateNewItem(clsid))
//Any exception will do. We just need to break out of the
//TRY statement.
AfxThrowMemoryException();

//Make sure the new CContainerItem is valid.
ASSERT_VALID(pItem);

// Launch the server to edit the item.
pItem->DoVerb(OLEIVERB_SHOW, this);


// As an arbitrary user interface design, this sets the
// selection to the last item inserted.
m_pSelection = pItem; // set selection to last inserted item
pDoc->UpdateAllViews(NULL);

//Query for the dispatch pointer for the embedded object. In
//this case, this is the Excel worksheet.
LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch();

COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

_Worksheet ws;
_Application app;
Workbooks books;

ws.AttachDispatch(lpDisp);
app = ws.GetApplication();
books = app.GetWorkbooks();

books.Open("D:\\traffic.xls",
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional);
}

到这里老是出Failed to create object. Make sure the object is entered in the system registry的错误,我用的是excel2000的库,刚接触ole,大家帮我看看好么。即使解决不了,告诉我怎么在多文档、使用OLE内嵌Excel的情况下打开已经存在的xls文件的其他方法也可以阿,谢谢了
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjyr 2003-10-19
  • 打赏
  • 举报
回复
哎,算了,我自己解决了
zhangjyr 2003-10-17
  • 打赏
  • 举报
回复
支持容器的
warmchang 2003-10-17
  • 打赏
  • 举报
回复
对,同意“gzshd(郁闷)”的说法。

你的工程需要作为文档服务器支持。
gzshd 2003-10-17
  • 打赏
  • 举报
回复
你的多文档工程有没有支持容器,可以在新建工程时的AppWizard里选,如果你没有做的话,可以新建一个支持容器的工程,比着改你的程序。或者可以用DataGrid之类的控件来做

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧