vc2008 操作excel 和ppt (插入图片)
2015-09-23 17:00
676 查看
一. vc2008实现打开指定excel文件,在指定位置插入图片
1: 新建一个基于对话框的工程
2:在类视图里点击添加新类
3:如下图,选中“TypeLib 中的MFC类”:
4:根据所按安装的office版本,添加EXCEl所对应的库
添加接口,可根据需要选择性的添加,也可以全部添加,每一个被选择的接口都会生成一个.h 文件
所生成的.h 文件会自动加载到工程中:
5 修改头文件:打开这些加入工程的头文件,将 #import "C:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE" no_namespace 注释掉
6:在stdafx.h 中添加头文件
#include "CApplication.h" #include "CRange.h" #include "CRanges.h" #include "CShape.h" #include "CShapes.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorksheet.h" #include "CWorksheets.h"
7:编译工程,出现报错:
…\crange.h(335): warning C4003: “DialogBoxW”宏的实参不足
…\crange.h(335): error C2059: 语法错误:“,”
修改 :将该函数名“DialogBox()”前面加“_”下划线,即“_DialogBox()”:
8:在TestExcel.cpp 中的InitInstance()中添加代码:AfxOleInit()
if (!AfxOleInit()) { AfxMessageBox("初始化Ole出错!"); return FALSE; }
9:添加相应按钮:
void CTestWordDlg::OnBnClickedInsertPic() { OpenExcel(_T("F:\\test.xlsx"),_T("F:\\test.bmp"),_T("B2"),_T("J10")); }
void CTestWordDlg::OpenExcel(CString strFilePath,CString strPicPath, CString strPicPointBegin, CString strPicPointEnd) { CApplication app; CWorkbooks books; CWorkbook book; CWorksheets sheets; CWorksheet sheet; CRange rang; CShapes m_shapes; CShape m_shape; LPDISPATCH lpDisp; COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); if (!app.CreateDispatch(_T("Excel.Application"))) { this->MessageBox(_T("can not create Application")); return ; } books = app.get_Workbooks(); lpDisp = books.Open(strFilePath,covOptional,covOptional,covOptional,covOptional,covOptional, covOptional,covOptional,covOptional,covOptional,covOptional, covOptional,covOptional,covOptional,covOptional); //book = books.Add(covOptional); book.AttachDispatch(lpDisp); sheets = book.get_Sheets(); sheet = sheets.get_Item(COleVariant((short)1)); //m_shapes.AttachDispatch(sheet.get_Shapes(),TRUE); m_shapes = sheet.get_Shapes(); rang = sheet.get_Range(COleVariant(strPicPointBegin),COleVariant(strPicPointEnd)); //rang = sheet.get_Range(COleVariant(_T("B1")),COleVariant(_T("j9"))); m_shape = m_shapes.AddPicture(strPicPath,false,true,(float)rang.get_Left().dblVal,(float)rang.get_Top().dblVal,(float)rang.get_Width().dblVal,(float)rang.get_Height().dblVal); rang.ReleaseDispatch(); m_shape.ReleaseDispatch(); m_shapes.ReleaseDispatch(); m_shape.ReleaseDispatch(); m_shapes.ReleaseDispatch(); book.ReleaseDispatch(); books.ReleaseDispatch(); book.Close(covOptional,covOptional,covOptional); books.Close(); app.ReleaseDispatch(); app.Quit(); }
二. 打开指定位置的PPT文档,在指定页面的指定位置加入指定图片
void CTestWordDlg::OpenPPT(CString strFilePath,CString strPicPath,CString strPageNum, CString strShapeNum) { CApplication0 app; CPresentation presentation; CPresentations presentations; CShape0 shape0; CShapes0 shapes0; CSlide slide; CSlides slides; CSlideShowView slideShowView; CSlideShowWindow slideShowWindow; CSlideShowWindows slideShowWindows; CView0 view0; if (!app.CreateDispatch(_T("Powerpoint.Application"))) { AfxMessageBox(_T("Could't start PowerPoint")); } else { app.put_Visible(TRUE); } presentations = app.get_Presentations(); presentation = presentations.Open(strFilePath,0,0,1); slides = presentation.get_Slides(); long lPageNum = _ttol(strPageNum); slide = slides.Item(COleVariant(lPageNum)); shapes0 = slide.get_Shapes(); long lShapeNum = _ttol(strShapeNum); shape0 = shapes0.Item(COleVariant(lShapeNum)); float fleft = shape0.get_Left(); float ftop = shape0.get_Top(); float fwidth = shape0.get_Width(); float fheight = shape0.get_Height(); shapes0.AddPicture(strPicPath,false,true,fleft,ftop,fwidth,fheight); app.Quit(); }
相关文章推荐
- HelpPage
- (leetcode) Combination Sum
- 常用网址
- CSDN中根据文章自动生成文章目录
- PAT(甲级)1018
- 高可用可伸缩架构实用经验谈
- Visual Studio2010解决无法启动***.lib的问题
- 提示软件包 xxx需要重新安装,但是我(apt)无法找到相应的安装
- UILabel自动换行
- Eclipse 开发快捷键使用详解
- 通用js函数集锦<来源于网络> 【二】
- jsonp协议原理深度解析
- 李冰烧山——大道至简第二章读后感
- vs2013 MFC打开文件或文件夹对话框(有图有真相)
- linux安装flume及问题
- zxing生成二维码
- HDU 2119--Matrix【二分图 && 最小点数覆盖】
- 注册表使用
- bzoj-2276 Temperature
- table调整td宽度整理-完美解决--费元星前端