VC操作Excel之基本操作
// 变量的定义
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
LPDISPATCH lpDisp;
COleVariant vResult;
CString str = "";
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//创建Excel 2003服务器(启动Excel)
if (!app.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("Create Excel service failure!");
return;
}
// 设置为FALSE时,后面的app.Quit();注释要打开
// 否则EXCEL.EXE进程会一直存在,并且每操作一次就会多开一个进程
app.SetVisible(TRUE);
books.AttachDispatch(app.GetWorkbooks(),true);
lpDisp = books.Open("E://test.xls",
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional);
ASSERT(lpDisp);
book.AttachDispatch(lpDisp);
// 得到Worksheets
sheets.AttachDispatch(book.GetWorksheets(),true);
// 得到Worksheet
sheet.AttachDispatch(sheets.GetItem(_variant_t((short)(1))));
// 得到全部Cells
range.AttachDispatch(sheet.GetCells(),true);
// 往单元格A1里写入字符串数据,就像操作矩阵一样,第1行第1列
range.SetItem(_variant_t((LONG)1),_variant_t((LONG)1),_variant_t("hello word!"));
// 往单元格A2里写入时间数据
range.AttachDispatch(sheet.GetRange(_variant_t("A2"), _variant_t("A2")),true);
range.SetValue2(_variant_t("2011/02/15"));
// 往单元格A3~A6里写入浮点数据
range.AttachDispatch(sheet.GetRange(_variant_t("A3"), _variant_t("A6")),true);
range.SetValue2(_variant_t((double)3.14));
// 设置单元格的列宽为12
range.AttachDispatch(sheet.GetRange(_variant_t("A1"), _variant_t("A1")),true);
range.SetColumnWidth(_variant_t((long)12));
// 所有单元格居中显示
range.AttachDispatch(sheet.GetCells(),true);
range.SetHorizontalAlignment(_variant_t((long)-4108)); // -4108:居中,-4131:靠左,-4152:靠右
range.SetVerticalAlignment(_variant_t((long)-4108)); // -4108:居中,-4160:靠上,-4107:靠下
// 读取单元格的数据,第4行第1列
range.AttachDispatch(range.GetItem(_variant_t((long)(4)),_variant_t((long)(1))).pdispVal );
vResult =range.GetValue(covOptional);
switch (vResult.vt)
{
case VT_BSTR: // 字符串
str=vResult.bstrVal;
break;
case VT_R8: // 8字节的数字
str.Format("%f",vResult.dblVal);
break;
case VT_DATE: // 时间格式
SYSTEMTIME st;
VariantTimeToSystemTime(vResult.date, &st);
break;
case VT_EMPTY: // 单元格空的
str="";
break;
}
//MessageBox(str);
Font ft; // 要插入excel类库里面的Font类,下面类似
range.AttachDispatch(sheet.GetRange(_variant_t("A3"), _variant_t("A5")),true);
ft.AttachDispatch(range.GetFont());
ft.SetName(_variant_t("华文行楷")); // 字体
ft.SetSize(_variant_t((long)12)); // 字号
//ft.SetColorIndex(_variant_t((long)3)); // 字的颜色: 红色
ft.SetColor( _variant_t((long) RGB(255, 0, 0) ) );
ft.SetBold(_variant_t((long)1)); // 1:粗体,0:非粗体
Interior it; // 底色设置
range.AttachDispatch(sheet.GetRange(_variant_t("C3"), _variant_t("E6")),true);
it.AttachDispatch(range.GetInterior());
it.SetColorIndex(_variant_t((long)20)); // 底色设置为浅青色
Borders borders; // 先设置区域内所有单元格的边框
borders = range.GetBorders();
borders.SetColorIndex(_variant_t((long)1));
borders.SetLineStyle(_variant_t((long)1));
borders.SetWeight(_variant_t((long)2));
// 然后设置外边框
// LineStyle=线型(1~13) Weight=线宽 ColorIndex=线的颜色(-4105为自动, 1为黑色)
range.BorderAround(_variant_t((long)9),_variant_t((long)1),_variant_t((long)1),vtMissing);
range.AttachDispatch(sheet.GetRange(_variant_t("C8"), _variant_t("D9")),true);
// 合并单元格
range.Merge(_variant_t((long)0));
book.Save(); // 保存Excel的内容
// app.SetDisplayAlerts(false); // 不弹出对话框询问是否保存
// app.Quit(); // 退出
//释放对象
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
app.ReleaseDispatch();
VC操作Excel之基本操作的更多相关文章
- VC操作Excel之基本操作(颜色等)【转载】
文章出处https://blog.csdn.net/form88/article/details/78566390 EXCEL里如何知道某种颜色的ColorIndex的值 ===fag::====== ...
- VC操作excel
http://www.cnblogs.com/witxjp/archive/2010/06/05/1752181.html 最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要 ...
- POI操作Excel
POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...
- VC++ operate excel
利用VC操作Excel的方法至少有两种 1 .利用ODBC把Excel文件当成数据库文件,来进行读.写.修改等操作,网上有人编写了CSpreadSheet类,提供支持. 2. 利用Automation ...
- JXL操作Excel
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...
- 使用EPPLUS操作EXcel
使用EPPLUS操作EXcel 时间 2014-11-06 19:28:01 姜糖水 原文 http://www.cnphp6.com/archives/58648 主题 Excel 1 下载Ep ...
- VS2010 C++ 操作Excel表格的编程实现
转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html 通过VC实现对Excel表格的操作的方法有多种, ...
- 在 VS2008 下操作 Excel 的方法总结
这些天做个软件,需要读取 Excel 并导入到数据库中,所以研究了一下在 VC 下操作 Excel 的方法,这里做个总结,以作备忘. 一.最常用的 OLE 自动化方式 这个方式应该说是功能最全的方 ...
- C# 操作Excel (二)
根据翻阅LTP.Net知识库系列之四中Office操作功能: 一.记录常用如下 (1)“在自己的程序中宿主Office”的意思就是在我们自己开发的应用程序的窗体上,显示一个就像Office应用程序那样 ...
随机推荐
- Apache Spark Shark的简介
Shark是构建在Spark和Hive基础之上的数据仓库. 目前,Shark已经完成学术使命,终止开发,但其架构和原理仍具有借鉴意义. 它提供了能够查询Hive中所存储数据的一套SQL接口,兼容现有的 ...
- MongoDB的备份与恢复
0. 目录 整库备份 整库恢复 单collection备份 单collection恢复 1. 备份 MongoDB提供了备份工具,mongodump.exe,在bin目录下,其用法如下: mongod ...
- POJ 3668 Game of Lines (暴力,判重)
题意:给定 n 个点,每个点都可以和另一个点相连,问你共有多少种不同斜率的直线. 析:那就直接暴力好了,反正数也不大,用set判重就好,注意斜率不存在的情况. 代码如下: #include <c ...
- Unity3D音乐音效学习笔记
对于Unity3D的音乐音效这块一直没有好好的看过,现在准备好好的研究一下,并作为一个笔记记录下. 支持格式 在游戏中,一般存在两种音乐,一种是时间较长的背景音乐,一种是时间较短的音效(比如按钮点击, ...
- c# 使用ChartDirector绘图的一些个人体会
c# 使用ChartDirector绘图的一些个人体会 引言: 最近给客户做一个B/S架构的证券交易大屏幕软件,其中用到对证券指数的走势以及成交量的图形绘制,由于客户要求图形的清晰而且要做 ...
- java线程中的wait和notify以及notifyall
一.区别与联系 1.1.wait(),notify()和notifyAll()都是java.lang.Object的方法,而确实sleep方法是Thread类中的方法,这是为什么呢? 因为wait和 ...
- Volley使用指南第四回(来自developer.android)
Volley网络请求的第四篇,废话不多说,开始. 这一篇文章将会教你怎样在Volley支持的范围内定制一个请求. 第一步:写一个通用请求: 大多数请求都有已经写好的接口供你调用,如果你的请求是Stri ...
- 【转】部署web项目到weblogic上启动错误
启动weblogic报错:java.lang.ClassCastException: com.sun.faces.application.WebappLifecycleListener cannot ...
- JQuery的Ajax使用Get,Post方法调用C#WebService并返回数据
本文将介绍jQuery调用基于.NET Framework 3.5的WebService返回JSON数据,另外还要介绍一下用jQuery调用WebService的参数设置及设置不当所出现的问题,还有出 ...
- #定位系统性能瓶颈# strace & ltrace
strace和ltrace分别相应的是系统调用和库函数调用, 系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思,面向的是硬件. 而库函数调用则面向的是应用开发的.相当于 ...