LPDISPATCH lpDisp;   //lpdispatch,接口指针

// 设置为FALSE时,加上app.Quit();

// 否则EXCEL.EXE进程会一直存在,并且每操作一次就会多开一个进程
 app.SetVisible(TRUE);
 books.AttachDispatch(app.GetWorkbooks(),true);

// 得到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 2 operations的更多相关文章

  1. [转]生成 Excel.dll

    来自:http://bbs.csdn.net/topics/330137762 默认的情况下microsoft excel 11.0 object library对象是一个.exe文件,所以我们需要利 ...

  2. 用VC调用EXCEL简单代码(转载自越长大越孤单,觉得很好)

    首先在stdafx.h里加入对IDispatch接口提供支持的头文件: #include <afxDisp.h> 再在应用程序类的InitInstance()函数里加入: AfxOleIn ...

  3. VC++ operate excel

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

  4. VC用OLE方式读写Excel

    前几天要做一个项目,需要读取Excel中的数据.从网上查资料发现,主要是有两种方式.一是把Excel表当成数据库使用ODBC读写,这样操作起来就跟操作Access数据库似的.但这种方式效率比较低.另一 ...

  5. VC操作excel

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

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

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

  7. VC操作Excel之基本操作

    // 变量的定义 _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Ran ...

  8. VC/MFC使用OLE操作 EXCEL

    1.VC插入sheet页到指定位置 插入sheet的函数用 sheets.Add(Before, After,Count,Type) 四个参数含义如下: 四个const   VARIANT:      ...

  9. 【VC++学习笔记一】MFC操作Excel

    最近在做一个读取Excel的功能,之前也做过相关的,但总是零零闪闪的,趁着正在劲头上,归纳一下: 利用Automation添加相关的类,在Excel2010中可以在安装文件夹下直接点击Excel.ex ...

随机推荐

  1. 关于 Unix 用户权限及进程权限及 Saved set-user-id

    最近在看APUE,看到3.14节,fcntl的时候#include <fcntl.h>int fcntl(int fd, int cmd, .../* int arg */);出错返回-1 ...

  2. CentOS 6.5设置静态IP教程 并且可以ping通

    CentOS6.5掉电或重启,它的IP会被DHCP重新分配,如果要远程控制这台电脑,不得不去打开显示器去查看它的新IP,这样太麻烦了.于是需要将这台电脑的IP设置成静态的. 网上常规的设置静态ip的方 ...

  3. python 函数可变长参数

    python中的可变长参数有两种: 一种是非关键字参数(*元组),另一种是关键字参数(**字典) 非关键字可变长参数: """ 非关键字可变参数,一个星号作为元组传入函数 ...

  4. 在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客

    尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在 Swift世界中很刺眼. 在 ...

  5. linux和window下mkdir函数问题(转-锦曦月)

    通过WIN32宏进行判断   window下mkdir函数   #include<direct.h> int _mkdir( const char *dirname );   linux下 ...

  6. JavaScript中的document.cookie的使用

    转:http://blog.csdn.net/liuyong0818/article/details/4807473 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Coo ...

  7. Android性能之启动时间篇

    背景介绍 Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了--应用耗电大: 2)首次/非首次启动应用,进入应用特别慢--应用启动慢: 3)应用使用过程中,越来越卡--CP ...

  8. Linux下编译安装PCRE库

    备注:如果没有root权限,使用 --prefix 指定安装路径 ./configure --prefix=/home/work/tools/pcre-8.xx =================== ...

  9. [MySql] - 开启外部访问

    打开 mysql 的查询窗口(使用root),使用SQL: -- 使用mysql库 use mysql; -- 更新密码 update user set password=PASSWORD('xxxx ...

  10. Hadoop数据读写原理

    数据流 MapReduce作业(job)是客户端执行的单位:它包括输入数据.MapReduce程序和配置信息.Hadoop把输入数据划分成等长的小数据发送到MapReduce,称之为输入分片.Hado ...