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应用程序那样 ...
随机推荐
- BAT-使用BAT方法结束进程(删除进程)
@echo off taskkill /f /im GAM.exe taskkill /f /im GCL10.exe
- iOS学习之自动布局
Autolayout: 最重要的两个概念: 约束:对控件位置和大小的限定条件 参照:对控件设置的约束是相对于哪一个视图而言的 自动布局的核心计算公式: obj1.property1 =(obj2.pr ...
- Spring MVC ControllerClassNameHandlerMapping example
handler mapping是把url跟控制器关联起来. In Spring MVC, ControllerClassNameHandlerMapping use convention to map ...
- IMAQ Flatten Image to String VI的参数设置对比
无压缩 jpeg压缩 无损二元包装 仅JPEG压缩时有效 平化类型(指定字符串中存储什么类型的数据) None JPEG PACKED BINARY Quality Image Image and ...
- 最新CentOS6.x下redis安装
1:软件环境: 系统版本:CentOS release 6.5 redis版本:redis-cli 3.0.5 安装目录:"/usr/local/redis" 下载软件:" ...
- poj 1517 u Calculate e
u Calculate e Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19465 Accepted: 11362 ...
- SQL Server 数据类型映射 (ADO.NET)
SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...
- .Net 代码安全保护产品DNGuard HVM使用
前辈人物写的程序啊! 官方网站:http://www.dnguard.net/index.aspx 官方博客:http://www.cnblogs.com/rick/ (很久没更新了) 原文http: ...
- mockjs学习总结(方便前端模拟数据,加快开发效率)
基本介绍: 在我们前端开发中经常遇到这样的事情,接口没有写好,只能写静态页面,如何才能用很简单的方法模拟后端数据呢?mockjs就干了这件事,而且干的还挺好. 下面是我作为初学者的一些总结经验,期 ...
- UVa673 Parentheses Balance
// UVa673 Parentheses Balance // 题意:输入一个包含()和[]的括号序列,判断是否合法. // 具体递归定义如下:1.空串合法:2.如果A和B都合法,则AB合法:3.如 ...