• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 用VC如何插图片到Excel中

用VC如何插图片到Excel中

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了excel怎么插图片,excel表格插图片,excel如何插图片,excel表格怎么插图片,excel单元格插图片等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 用VC如何插图片到Excel中
描述:

help
我会插入数据
但是图片如何插入
我一直搞不定
好郁闷


解决方案1:

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()
{
COleVariant covOptional( (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()
{
COleVariant covOptional( (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 );

解决方案2:

其实你自己录制一个宏然后单步运行就知道 VBA 代码的了
知道 VBA 代码后自己写就简单了

解决方案3:

看看我写的 BCB 代码:
    col -= 1;   // 0 与 1 的区别
    if ( col <= 'Z'-'A' ) wsprintf(strSet, "%c%d", ('A'+col), row );
    else wsprintf(strSet, "%c%c%d", ('A'+ col/('Z'-'A'+1) -1), ('A'+ col%('Z'-'A'+1) ), row );
    if ( FileExists(asCurrentDir+ "\\JPG\\temp.jpg") ) // 是否存在文件
    {
        MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet").
            OlePropertyGet("Range", strSet).OleProcedure("Select");
        MSExcel.OlePropertyGet("ActiveWorkBook").OlePropertyGet("ActiveSheet").
            OlePropertyGet("Pictures"). // c_str()与标准 C++ 中的string的c_str()函数一样
            OleProcedure("Insert", (asCurrentDir+ "\\JPG\\temp.jpg").c_str());  
    }

解决方案4:


Excel::PicturesPtr pts=oSheet->Pictures();
pts->Insert((_bstr_t)strBmp); //strBmp 为图片存放的位置
DeleteFile(strBmp);
pts->PutTop(m_pCanvas->m_nPicturePos);
//COleVariant vstr=strFn;

解决方案5:

Office的VBA帮助里有例子.也可以在Office中录制宏
参考
Excel::WorkbooksPtr oBooks;
oBooks=oApp->GetWorkbooks();
Excel::_WorkbookPtr oBook;
oBook=oBooks->Add(vOpt);
Excel::WorksheetsPtr oSheets;
oSheets=oBook->GetWorksheets();
Excel::_WorksheetPtr oSheet;
oSheet=oSheets->GetItem(1L);
Excel::RangePtr oRange;
m_pCanvas->SaveCurveData(oSheet,oRange); 
Excel::PicturesPtr pts=oSheet->Pictures();
pts->Insert((_bstr_t)strBmp); //strBmp 为图片存放的位置
DeleteFile(strBmp);
pts->PutTop(m_pCanvas->m_nPicturePos);
// COleVariant vstr=strFn;
COleVariant vTrue((short)TRUE),vFalse((short)FALSE);
oBook->SaveAs(COleVariant(strFn),-4143L,COleVariant(""),COleVariant(""),vFalse,
vFalse,Excel::XlSaveAsAccessMode(1L));

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用VC如何插图片到Excel中

相关文章

  • 2017-06-05 请教如何使用vc控制word画出列的宽度不同的表格
  • 2017-06-05 请问VC的dll工程可以重定向输出lib吗
  • 2017-06-04 word类型库引用后,类重定义的问题,怎样处理?我只队WORD进行操作
  • 2017-06-04 进程外组件的一个问题,高分相赠
  • 2017-06-04 请问directsound能用来播放背景音乐吗?
  • 2017-06-05 ThunderRT5TextBox??
  • 2017-06-05 双CPU的问题VC++
  • 2017-06-05 线程通信问题高手请进,见者有分。
  • 2017-06-05 多线程的socket程序出现cpu100%!???
  • 2017-06-05 辅助线程如何访问主线程中的数据?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于BHO的问题,我的BHO不工作!
    • 怎么Hook不到send函数?
    • 一个困惑很久的问题,可怜我,望哪路高手帮忙
    • 一个在线程中创建COM组建失败的问题,请高手救急!!!!!
    • 如何制作控件,
    • com环境初始化问题!
    • errorMIDL2025:syntaxerror:expecting]or,near"QUEUEABLE"
    • 双接口,早绑定接口,晚绑定接口和自动化IDispatch,非自动化到底是什么关系?
    • 关于ActiveX的问题
    • 用HOOK将自己的菜单加到第三方软件的右键菜单上,如何响应自己的菜单事件?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有