MFC VC 操作Excel,word的OLE对象

声明:上次写这篇文章的时候用的是截图,导致看不见东西,不是故意的。

本文的内容有两部分:

第一部分是手动打开一个excel表格以后,Ctrl+C复制表格中的内容,点击程序中的一个按钮,跳到OnTreePop_CopyForExcelOle()函数中。走的是

ExcelCopyObject()接口。该函数是把刚才复制的excel表格以Microsoft Excel 工作表 对象插入到一个临时建立的word文件中,在该函数中,需要把对象粘贴到richEdit控件中,但是直接粘贴只能显示一部分。只有在word中把对象转换成嵌入型以后才能全部粘贴到richEdit控件中。所以进行了环绕方式的转换。

第二部分是手动打开一个word文件,里面有组织结构图等不能直接复制到richEdit控件中的图形。为了把这些图形复制到richEdit控件中,需要先把其转换成OLE对象。同样复制以后,点击按钮跳到OnTreePop_CopyForWordOle()函数中。走WordCopyObject()和PasteOleToWord(flag)接口。第一个接口是把图片复制到word临时文件中。第二个接口是把临时文件以OLE对象插入到另一个临时word文件。最后把这个OLE对象粘贴到richEdit控件中



//word  1
void CMainFrame::OnTreePop_CopyForWordOle()
{
TreePop_CopyForOle( 1 );
}


//excel  0
void CMainFrame::OnTreePop_CopyForExcelOle()
{
TreePop_CopyForOle( 0 );
}


//visio  2
void CMainFrame::OnTreePop_CopyForVisioOle()
{
TreePop_CopyForOle( 2 );
}


void CMainFrame::TreePop_CopyForOle( int flag )
{
int res;
if (flag == 0)
res = ExcelCopyObject();
else if (flag == 1)
{
res = WordCopyObject();
if (res != -1)
PasteOleToWord(flag);
}
}
/
//


//  从word文件中按下Ctrl + C后,复制到a.docx中,并且保存。每次复制时,a.docx都会清空,保证a.docx中保存的是最新复制的内容
//
//  2015年1月6日10:43:05   hjz








int CMainFrame::ExcelCopyObject()
{
char pFileName[MAX_PATH]; 
int nPos = GetCurrentDirectory( MAX_PATH, pFileName); 
CString csFullPath(pFileName);  
CString csFullPathA = csFullPath + "\\System\\Module\\CopyForWord.docx";
//查找是否有CopyForWord.docx,如果有删除它
HANDLE h;
LPWIN32_FIND_DATA pFD=new WIN32_FIND_DATA;
BOOL bFound = FALSE;
if(pFD)
{
h=FindFirstFile(csFullPathA, pFD);
bFound=(h!=INVALID_HANDLE_VALUE);
if(bFound)
{
FindClose(h);
DeleteFile(csFullPathA);
}
delete pFD;
}


CWordApplication wordapp;
CWordDocuments docs;
CWordDocument doc;
if (!wordapp.CreateDispatch(_T("Word.application")))
{
AfxMessageBox(_T("Word初始化时出错!"));
return -1;
}


wordapp.SetVisible(FALSE);
docs = wordapp.GetDocuments();


CComVariant Template(_T(""));
CComVariant NewTemplate(fal

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值