// 变量的定义

_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之基本操作的更多相关文章

  1. VC操作Excel之基本操作(颜色等)【转载】

    文章出处https://blog.csdn.net/form88/article/details/78566390 EXCEL里如何知道某种颜色的ColorIndex的值 ===fag::====== ...

  2. VC操作excel

    http://www.cnblogs.com/witxjp/archive/2010/06/05/1752181.html   最近在做个数据库程序,因为有些数据用户要求导出到Excel文件显示(需要 ...

  3. POI操作Excel

    POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...

  4. VC++ operate excel

    利用VC操作Excel的方法至少有两种 1 .利用ODBC把Excel文件当成数据库文件,来进行读.写.修改等操作,网上有人编写了CSpreadSheet类,提供支持. 2. 利用Automation ...

  5. JXL操作Excel

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...

  6. 使用EPPLUS操作EXcel

    使用EPPLUS操作EXcel 时间 2014-11-06 19:28:01  姜糖水 原文  http://www.cnphp6.com/archives/58648 主题 Excel 1 下载Ep ...

  7. VS2010 C++ 操作Excel表格的编程实现

    转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html 通过VC实现对Excel表格的操作的方法有多种, ...

  8. 在 VS2008 下操作 Excel 的方法总结

      这些天做个软件,需要读取 Excel 并导入到数据库中,所以研究了一下在 VC 下操作 Excel 的方法,这里做个总结,以作备忘. 一.最常用的 OLE 自动化方式 这个方式应该说是功能最全的方 ...

  9. C# 操作Excel (二)

    根据翻阅LTP.Net知识库系列之四中Office操作功能: 一.记录常用如下 (1)“在自己的程序中宿主Office”的意思就是在我们自己开发的应用程序的窗体上,显示一个就像Office应用程序那样 ...

随机推荐

  1. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  2. DBMS_ERRLOG记录DML错误日志(二)

    上一篇简单介绍了DML记录语句的限制,虽然所有的例子都是利用INSERT语句,但是LOG ERRORS语句并没有这个限制,UPDATE.DELETE和MERGE都可以使用这个语句.下面要说的就是这篇的 ...

  3. MySQL索引的创建,查看,删除

    在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引. 1.ALTER TABLE ALTER TABLE用来创建普通索引.UN ...

  4. HDU 2275 multiset

    题意:n个操作 Push 入容器 Pop弹出一个 满足<=该数的最大的数(若没有输出No Element!) 开始用set打了一遍wrong了,这里入容器的数是有重复的,所以用multiset ...

  5. Codeforces Round #353 (Div. 2) D. Tree Construction (二分,stl_set)

    题目链接:http://codeforces.com/problemset/problem/675/D 给你一个如题的二叉树,让你求出每个节点的父节点是多少. 用set来存储每个数,遍历到a[i]的时 ...

  6. Unity3D之空间转换学习笔记(三):3D数学

    3D数学基础 向量 向量可以看做具有方向和大小的一条线段. 比如:我们如果用点A减去点B,则可以得到一个向量,该向量的方向为点B面向点A的方向,而大小为两点的距离.这个方法在游戏开发中经常用到,比如我 ...

  7. C# 钩子HOOK专题(1)

    目录   基本概念 运行机制 钩子类型 作者 基本概念   钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程 ...

  8. 直接下载Google Play市场的APK

    传送门在这里:http://apps.evozi.com/apk-downloader/ 似乎很方便.很迅速的样子,忍不住在这里记录一下.

  9. Android应用程序框架之无边界设计意图

    Android的应用框架的外特性空间的描述在SDK文档有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述.在外特性空间中,Android提供了Activity,Service ...

  10. PHP写入文件用file_put_contents代替fwrite优点多多(转)

    使用php有一段时间了,之前一直用fwrite写入文件,不过当我知道file_put_contents这个函数之后,fwrite就比较少用了,file_put_contents比fwrite代码更简洁 ...