使用MFC在SDI的CXXXXView里面通过:“CXXXXCntrItem->DoVerb(OLEIVERB_SHOW, this)”打算对被载入视图中的Excel表进行编辑。(这里有个小问题:究竟可以被我编辑的表是在视图中还是在包容器里?视觉上看像是在视图中,但是命令又是使用Container里面的方法!题外话~~~)
编辑完以后则无法正确保存Excel对象。
主要代码如下:#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorkbook.h"
#include "CWorksheets.h"
#include "CWorksheet.h"
#include "CRange.h"///////////////////////////////////////////////////////////
void CXXXXView::EmbedAutomateExcel(CString FileName)
{
CApplication m_Excel;
CWorkbooks m_Books;
CWorkbook m_Book;
CWorksheets m_Sheets;
CWorksheet m_Sheet;
CRange m_Range; CXXXXCntrItem* pItem = NULL;
CXXXXDoc *pDoc = GetDocument(); ...... pItem->DoVerb(OLEIVERB_SHOW,this); //如果去掉这条语句,不能编辑,但是却可以保存文件了......
m_pSelection = pItem;
pDoc->UpdateAllViews(NULL); LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch(); m_Book.AttachDispatch(lpDisp);
m_Sheets = m_ReportTable.m_Book.get_Worksheets();
m_Sheet = m_ReportTable.m_Sheets.get_Item(COleVariant((short)1));
m_Book.SaveAs(COleVariant(FileName), vOpt, vOpt, vOpt, vOpt, vOpt,
xlNC, xlLSC, vOpt, vOpt, vOpt, vOpt);
//在最后这句SaveAs()的时候出问题了,提示“未能创建对象,请确保在系统注册表中输入了该对象。”
}
/////////////////////////////////////////////////////////// 应该有高手也遇到过这样的问题吧?最后我又尝试了使用“IPersistFile->Save(......)”的方法保存也没有效果?!请问究竟是怎么回事?如果去掉“DoVerb”在非编辑态下又能正确保存文件,百思不得其解,望高人们指教,万分感谢!!!!!!
编辑完以后则无法正确保存Excel对象。
主要代码如下:#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorkbook.h"
#include "CWorksheets.h"
#include "CWorksheet.h"
#include "CRange.h"///////////////////////////////////////////////////////////
void CXXXXView::EmbedAutomateExcel(CString FileName)
{
CApplication m_Excel;
CWorkbooks m_Books;
CWorkbook m_Book;
CWorksheets m_Sheets;
CWorksheet m_Sheet;
CRange m_Range; CXXXXCntrItem* pItem = NULL;
CXXXXDoc *pDoc = GetDocument(); ...... pItem->DoVerb(OLEIVERB_SHOW,this); //如果去掉这条语句,不能编辑,但是却可以保存文件了......
m_pSelection = pItem;
pDoc->UpdateAllViews(NULL); LPDISPATCH lpDisp;
lpDisp = pItem->GetIDispatch(); m_Book.AttachDispatch(lpDisp);
m_Sheets = m_ReportTable.m_Book.get_Worksheets();
m_Sheet = m_ReportTable.m_Sheets.get_Item(COleVariant((short)1));
m_Book.SaveAs(COleVariant(FileName), vOpt, vOpt, vOpt, vOpt, vOpt,
xlNC, xlLSC, vOpt, vOpt, vOpt, vOpt);
//在最后这句SaveAs()的时候出问题了,提示“未能创建对象,请确保在系统注册表中输入了该对象。”
}
/////////////////////////////////////////////////////////// 应该有高手也遇到过这样的问题吧?最后我又尝试了使用“IPersistFile->Save(......)”的方法保存也没有效果?!请问究竟是怎么回事?如果去掉“DoVerb”在非编辑态下又能正确保存文件,百思不得其解,望高人们指教,万分感谢!!!!!!
不知道能不能给一个稍微详细一点的解法:)