在MFC中使用EXCEL API (一)
把网上的一些文章整理了一下
把EXCEL9.OLB里的几个常用类库导出,方便使用
***************************************************
我已导出的类
CApplication.h -> _Application接口
CWorkbooks.h -> Workbooks接口
CWorkbook.h -> _Workbook接口
CWorksheets.h -> Worksheets接口
CWorksheet.h -> _Worksheet接口
CRange.h -> Range接口
ExcelFile.h
ExcelFile.cpp -> MSN BLOG上找到的一个包装类,还不错
(转自)http://wzqxp2002.spaces.live.com/blog/cns!91353f4c90156be7!235.entry
***************************************************
下载地址: http://www.citree.com/beiouwolf/excel.rar
直接包含到项目里就能使用了
如果需要其他特殊的类库或者喜欢自己导出类库,请看下面
***************************************************
VC 6中 使用excel2000的方法
***************************************************
首先利用Visual C++ 6.0,建立一个MFC基于对话框的工程项目,共享DLL,Win32平台。工程名称ExcelTest。在主对话框中加入一个按钮,
ID IDC_EXCELTEST
Caption Test Excel
双击该按钮,增加成员函数void CExcelTestDlg::OnExceltest()。
在BOOL CExcelTestApp::InitInstance()中,dlg.DoModal();之前增加代码:
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
exit(1);
}
在return FALSE; 语句前,加入:
CoUninitialize();
选择Menu->View->ClassWizade,打开ClassWizade窗口,选择Add Class->From a type library,选择D:/Program Files/Microsoft Office/office/Excel9.OLB(D:/Program Files/Microsoft Office/是本机上Microsoft Office 2000的安装目录,可根据个人机器上的实际安装目录修改)。选择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,头文件Excel9.h,源文件Excel9.cpp。
在ExcelTestDlg.cpp文件的头部,#include "ExcelTestDlg.h"语句之下,增加 :
#include "comdef.h"
#include "Excel9.h"
在void CExcelTestDlg::OnExceltest() 函数中增加如下代码:
void CExcelTestDlg::OnExceltest()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
//利用模板文件建立新文档
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g://exceltest//MyTemplate.xlt")));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//设置1行1列的单元的值
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));
//得到所有的列
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);
//得到第一列
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//设置列宽
rgMyRge.SetColumnWidth(_variant_t((long)200));
//调用模板中预先存放的宏
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
//打印预览
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
wbMyBook.PrintPreview(_variant_t(false));
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
******************************************************
VS.NET中使用方法
******************************************************
导入类库的时候,在解决方案管理器中右键点击项目 -> 添加类
选择MFC -> 类型库中的MFC的类
声明类库的时候方法名不一样
包含的H文件不是 excel9.h ,
#include "CApplication.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
#include "CRange.h"
#include "comdef.h"
类型声明改成
CApplication ExcelApp;
CWorkbooks wbMyBooks;
CWorkbook wbMyBook;
CWorksheets wssMysheets;
CWorksheet wssMysheet;
CRange rgMyRge;
在MFC中使用EXCEL API (一)相关推荐
- 关于MFC中读取EXCEL文件的操作
转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件.如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/75999 ...
- MFC中的消息处理函数
1.在Windows API编程中,直接在消息处理函数中编写WM_PAINT处理代码. 2.在MFC中,CFrameWnd的消息处理过程在哪里呢?MFC时如何将消息处理函数和窗口关联起来的. 在CFr ...
- mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla. 1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/. ...
- MFC中的GDI绘图
MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...
- c++:MFC中sqlite3的使用(附实际案例)
MFC中sqlite3的使用 sqlite3介绍 sqlite3安装 常用API函数 操作流程 接口函数 执行sql语句函数 回调函数 MFC中案例实践 控制台实践 sqlite3介绍 SQLite ...
- 转:MFC中创建多线程
MFC中创建多线程 MFC的多线程函数必须声明为静态的或者是全局函数(不同的在于全局函数不能访问类的私有静态成员,而静态类函数可以):但这样的线程函数只能访问静态的成员变量,要实现访问类的其他成员,可 ...
- JAVA EXCEL API详解
2019独角兽企业重金招聘Python工程师标准>>> 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易 ...
- MFC中如何从EDIT控件中获取文字
MFC中获取文本框的方法不同于C#,有点麻烦,主要有以下两种方法: 一.API法 用函数:GetdlgItemText获取文本,SetdlgItemText显示文本 [cpp] view plain ...
- 多线程编程之二——MFC中的多线程开发
五.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...
最新文章
- 信息与计算机科学专业自荐书,信息与计算科学专业的自荐信
- java 多线程Callable和Runable执行顺序问题详解
- Codeforces Round #547 (Div. 3) D
- android 获取sim卡,Android 获取手机SIM卡运营商
- 洛谷P2463 Sandy的卡片【后缀数组】【二分】
- android 在什么情况下会主动gc_Python 什么情况下会生成 pyc 文件?
- 棋牌游戏服务器架构: 详细设计(三) 数据库设计
- python子进程kerberos_Anaconda3的python找不到kerberos凭证缓存
- accept 返回0_使用Vue3.0新特性造轮子 WidgetUI3.0 (Upload上传文件组件)
- cotlin java go_Aspectj 在Android中的简单使用(Java + Kotlin)-Go语言中文社区
- java中如何切割图片_Java 切割图片代码
- 100句自我激励的名言佳句
- 【Excel从头开始】-3 从网页导出数据到Excel
- 沙盘模拟软件_我院学生参加第十六届全国大学生“新道杯”沙盘模拟经营大赛喜获佳绩...
- 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题
- 如何使用flex布局,实现三个div垂直居中布局
- 外贸小公司如何做谷歌SEO优化
- 语句摘抄——第28周
- 淘宝客接入PHP(一)
- 计算机毕业是先就业还是考研,先工作还是先考研?这些专业更适合先就业