vc操作Excel。
pc操作系统情况:
Windows XP,office 2003,vc6
经过半下午的搜索发现了vc操作Excel的几种方法
1、ODBC。
暂时还没有试。
2、OLE,即com的方式。
这种方法可能和Excel的版本有关系。
在网上下载了一个基于office2000的代码,在自己的电脑上编译后,可以运行。
自己建立一个工程,
1)按ctrl-w,add class,from a type library,选择目录C:/Program Files/Microsoft Office/OFFICE11/XL5EN32.OLB,在Confirm Classes中选择Application,Range,Workbook,Workbooks,Worksheet,Worksheets后确认。
2)在App::InitInstance()中增加com初始化。
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
exit(1);
}
com的释放
CoUninitialize();
3)在dlg.cpp中添加
#include "xl5en32.h"
4)将如下代码(office 2000 可用代码)
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);
}
//ExcelApp.SetVisible(false);
VARIANT tmp;
tmp.boolVal=false;
ExcelApp.SetVisible(tmp);
//利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "//template1";
wbsMyBooks.AttachDispatch(ExcelApp.GetActiveWorkbook(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//添加模板个数
for(int i=0;i<4;i++){
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
}
CString str1;
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
str1 = "第1页";
wsMysheet.SetName(str1);
for(i=0;i<wssMysheets.GetCount()-1;i++){
wsMysheet = wsMysheet.GetNext();
str1.Format("第%d页",i+2);
wsMysheet.SetName(str1);
}
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("第1页")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//设置1行1列的单元的值
CString str=_TEXT("21:12");
rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)3),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)3),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)4),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)8),_variant_t((long)4),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)4),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)10),_variant_t((long)4),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)11),_variant_t((long)4),_variant_t(str));
rgMyRge.SetItem(_variant_t((long)12),_variant_t((long)4),_variant_t(str));
//将表格保存
strPath = path;
strPath += "//ylhexcel.xls";
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing);
ExcelApp.SetVisible(true);
wbMyBook.PrintPreview(_variant_t(false));
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
这样之后会有很多异常。
验证了和office 的版本有关系。
3、基于Excel文件格式的控制。
暂时还没有试。
vc操作Excel。相关推荐
- VC操作Excel文件编程相关内容总结
最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要报给其他单位).所以查阅了一下相关的VC的Excel编程操作,总结一下吧:(所有资料来源于网络) 利用VC操作Excel的方法至 ...
- VC操作excel表格
VC操作excel表格(一) 1.The require files When you start to program in VC, you must have the lib files of E ...
- VC 操作excel
简介 通过本文及配套示例源码你可以更加灵活的控制Excel表格文件,其中包括创建新Excel文件.写入表格数据.读取表格数据(包括对原建Excel文件自已手工添加的行.列数据的准确读取),删除已有Ex ...
- VC操作Excel之sercies、Trendline
演示一下如何通过VC操作Excel生成下面这样的一个图表,它有两个系列,每个系列都拥有自己的X轴数据和Y轴数据,同时显示其线性的渐近线(TrendLine)以及获取其渐近线公式,因为在项目当中有时候需 ...
- VC操作Excel收集
VC操作Excel的方法(2007-01-05 21:18:45) A:从classwizard中add class处from type library,去office的安装目录下引入exc ...
- 使用VB或VC操作Excel 2003
1.VB操作EXCEL2003 [vb] view plaincopy '*************************************************************** ...
- vc操作excel,包括合并单元格,新增,删除sheet,设置字体,底色(OLE/COM)
1.制作应用软件的时候,经常要把结果以报表的形式输出,当前使用较为广泛的当然是Excel表格,本文简略介绍在VC++6.0中如何使用Excel2003的库函数并对其进行编程.先创建一个对话框工程,命名 ...
- VC操作Excel之用ChartWizard自动生成图表
在用VC操作Excel的时候,生成图表有时是不可避免的,这里记下如何通过ChartWizard来简单生成一个图表.首先我们得了解一下图表的组成结构,一个简单的chart通常包括标题.绘图区.图例.数值 ...
- VC++操作EXCEL内存泄露问题
一般VC++操作EXCEL的操作步骤我就不写了,度娘一下一大堆. 好久以前写在博客里面的一篇草稿,现在博客开张了,一并放出来吧. 2014年11月为了EXCEL的"切换到.重试.取消&quo ...
最新文章
- 判断一个变量是不是指针
- 去除图片水印_只需一键,即可快速去除图片水印!如此简单的方法,谁不知谁吃亏...
- oracle 中的几天后,几年后
- Selenium-基础操作
- python 获取浏览器句柄下的网页控件,Python获取浏览器窗口句柄过程解析
- python编程从入门到实践之外星人入侵
- KNN分类算法原理与Python+sklearn实现根据身高和体重对体型分类
- 最受互联网争抢的web前端工程师
- 生产是什么意思_俗话说:“牛遇无春年,出力好耕田”是啥意思?有什么道理?...
- 【演化计算】【论文研读】Surrogate-Assisted Evolutionary DL Using E2E Random Forest-based Performance Predictor
- RubyGem version error: rack(1.0.0 runtime)
- 通达OA 指纹考勤机接口 源代码
- 参考文献空格怎么空_参考文献中的标点符号后要不要加空格
- 若依源码学习7:Excel 导入导出
- 知乎|10个程序员必备免费电子书下载网站
- UVA 12307 Smallest Enclosing Rectangle(旋转卡壳)
- 微信小程序 - 婚礼邀请函
- python基本输入输出函数有_python基本输入输出函数与变量类型
- mnist数据集在FATE上应用
- 北京计算机数字媒体技术大学排名,学习数字媒体技术在北京有哪些好大学,排名?...
热门文章
- 铁威马NAS中如何进行文件管理设置
- nrf2401 - 最廉价的2.4G无线通信方案
- cgb2007-京淘day04
- Arduino UNO + DS1302简单获取时间并串口打印
- C语言实现时间戳转年月日时分秒格式
- python安装错80072ee2_win7更新错误80072ee2怎么解决-解决win7更新错误80072ee2的方法 - 河东软件园...
- 利用python解析地址经纬度和利用经纬度定位地址
- Error (10028): Can't resolve multiple constant drivers for net cnt[19] at key.v(95)
- 灰姑娘的魔法衣橱 RENT THE RUNWAY= 女人+互联网 | 经济学人全球早报精选
- Android中获取屏幕宽度(利于屏幕适配)