PicturesPtr不可能被倒出来的,因为它是在IDL中隐藏了。vb还可以使用,不知道vc怎么使用隐藏的方法。我找到一种方法可以插入图片,首先导入excel9.olb(Excel 95 and prior : xl5en32.olb
Excel 97 : excel8.olb
Excel 2000 : excel9.olb
Excel 2002 : excel.exe):
// ExcelPicture.h: interface for the CExcelPicture class.
//
//
#if !defined(AFX_EXCELPICTURE_H__CA5DFF0B_49DC_4829_BB22_A0010E28A64C__INCLUDED_)
#define AFX_EXCELPICTURE_H__CA5DFF0B_49DC_4829_BB22_A0010E28A64C__INCLUDED_
#include "excel9.h"// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CExcelPicture
{
public:
BOOL InsertPicture(LPCTSTR lpszFilePath);
CExcelPicture();
virtual ~CExcelPicture();
protected:
_Application m_pApp;
Workbooks m_pWorkBooks;
_Workbook m_pWorkBook;
//Sheets* m_pSheets;
_Worksheet m_pWorkSheet;
//Range* m_pRange;
Shapes m_pShapes;
//Shape* m_pShape;
};
#endif // !defined(AFX_EXCELPICTURE_H__CA5DFF0B_49DC_4829_BB22_A0010E28A64C__INCLUDED_)
//---------------------------------------------------------------------------------------
// ExcelPicture.cpp: implementation of the CExcelPicture class.
//
//
#include "stdafx.h"
#include "ExcelPicture.h"
#include "COMDEF.H"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//
// Construction/Destruction
//
CExcelPicture::CExcelPicture()
{
COleVariantcovOptional( (long)DISP_E_PARAMNOTFOUND, VT_ERROR );
if(!AfxOleInit())
{
AfxMessageBox("无法初始化COM的动态连接库!");
return ;
}
if( !m_pApp.CreateDispatch( _T("Excel.Application") ) )
{
AfxMessageBox("无法启动Excel服务器!");
return;
}
m_pWorkBooks.AttachDispatch( m_pApp.GetWorkbooks() );
LPDISPATCH lpdspWork = m_pWorkBooks.Open( _T("C://TestPicture.xls"),
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional );
m_pWorkBook.AttachDispatch( lpdspWork );
m_pWorkSheet.AttachDispatch( m_pWorkBook.GetActiveSheet() );
m_pShapes.AttachDispatch( m_pWorkSheet.GetShapes() );
}
CExcelPicture::~CExcelPicture()
{
COleVariantcovOptional( (long)DISP_E_PARAMNOTFOUND, VT_ERROR );
if( m_pApp )
{
m_pShapes.ReleaseDispatch();
m_pWorkSheet.ReleaseDispatch();
m_pWorkBook.Save();
m_pWorkBook.Close( covOptional,COleVariant(_T("C://TestPicture.xls")),covOptional );
m_pWorkBook.ReleaseDispatch();
m_pWorkBooks.Close();
m_pWorkBooks.ReleaseDispatch();
m_pApp.Quit();
m_pApp.ReleaseDispatch();
}
}
BOOL CExcelPicture::InsertPicture(LPCTSTR lpszFilePath)
{
m_pShapes.AddPicture( lpszFilePath, 1, 1, 100, 100, 53, 53 );
AfxMessageBox( _T("Insert Picture succeed!") );
return TRUE;
}
//-------------------------------CALL METHOD-----------------------------------------
LPCTSTR lpszFile = _T("C://Documents and Settings//WIN XP//桌面//image68.gif");
CExcelPicture pic;
pic.InsertPicture( lpszFile );
Excel插入图片
最新推荐文章于 2023-05-27 21:19:32 发布