在VC大本营里查到一篇文章,利用Automate创建了一个Excel并陷入了SDI里,修改后想直接保存,但一直不能成功,(已经获的了LPDISPATCH lpDisp; lpDisp = theApp.m_pSelection->GetIDispatch(); )请教保存的方法。解决马上结贴。
void COfficeView::EmbedAutomateWord()
{
BeginWaitCursor();
COfficeCntrItem* pItem = NULL;
TRY
{
COfficeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new COfficeCntrItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Excel.sheet",&clsid)))
AfxThrowMemoryException();
/////////////
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW, this);
theApp.m_pSelection = pItem;
pDoc->UpdateAllViews(NULL);
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
theApp.ShowMyMsgDlg("创建 Word 或 Excel 失败!");
}
END_CATCH
EndWaitCursor();
}
void COfficeView::EmbedAutomateWord()
{
BeginWaitCursor();
COfficeCntrItem* pItem = NULL;
TRY
{
COfficeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new COfficeCntrItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Excel.sheet",&clsid)))
AfxThrowMemoryException();
/////////////
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW, this);
theApp.m_pSelection = pItem;
pDoc->UpdateAllViews(NULL);
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
theApp.ShowMyMsgDlg("创建 Word 或 Excel 失败!");
}
END_CATCH
EndWaitCursor();
}
解决方案 »
- vc++ 窗体运行完picture box控件里动态显示位图
- 通讯模式,线程处理
- VC++6.0应该使用什么版本的MSDN?在哪里下载?
- error C2248 cannot access private member declared in class
- 有哪位高人帮我看一下point的分类算法
- 动画制作
- 在线急问一个线程同步问题
- 有用过BoundChecker的各位大侠,请看下面的错误,是用BoundChecker编译的,给小弟解释一下,不胜感激。
- LINK : warning LNK4039: section "Shared" specified with /SECTION option does not exist
- asp中调用DCOM的问题
- 高分求《unix网络编程》卷一和卷二,多谢啦!
- 如何设置文档的默认类型??
初始化excel:CoInitialize(NULL);
m_ExApp.CreateDispatch("Excel.Application", NULL);
m_ExApp.SetDisplayAlerts(FALSE);
if(!m_ExApp)
{
DisplayMessage(AfxGetApp()->GetMainWnd(),TEST_ERR_EXL_OPN,MB_ICONWARNING);
return FALSE;
}
try
{
m_ExBooks = m_ExApp.GetWorkbooks();
m_ExBook = m_ExBooks.Add(vtMissing);
m_ExSheets = m_ExBook.GetWorksheets();
m_ExSheet = m_ExSheets.GetItem(_variant_t((short)1));
DeleteSheet(3);
DeleteSheet(2);
}
CATCH_EXCEL;操作部分略去
.......
......保存Excel文件:m_ExBook.SaveAs(_variant_t(strFileName), vtMissing, vtMissing,vtMissing, vtMissing, vtMissing, 0, vtMissing, vtMissing,vtMissing, vtMissing);strFileName 是Excel的文件名关闭Excel:
try
{
m_ExSheet.m_bAutoRelease = TRUE;
m_ExSheets.m_bAutoRelease = TRUE;
m_ExBook.m_bAutoRelease = TRUE;
m_ExBooks.m_bAutoRelease = TRUE;
m_ExApp.m_bAutoRelease = TRUE; m_ExSheet.ReleaseDispatch();
m_ExSheets.ReleaseDispatch();
m_ExBook.ReleaseDispatch();
m_ExBooks.ReleaseDispatch();
m_ExApp.Quit();
m_ExApp.ReleaseDispatch();
CoUninitialize();
}
CATCH_EXCEL;