// 变量的定义

_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. BAT-使用BAT方法结束进程(删除进程)

    @echo off taskkill /f /im GAM.exe taskkill /f /im GCL10.exe

  2. iOS学习之自动布局

    Autolayout: 最重要的两个概念: 约束:对控件位置和大小的限定条件 参照:对控件设置的约束是相对于哪一个视图而言的 自动布局的核心计算公式: obj1.property1 =(obj2.pr ...

  3. Spring MVC ControllerClassNameHandlerMapping example

    handler mapping是把url跟控制器关联起来. In Spring MVC, ControllerClassNameHandlerMapping use convention to map ...

  4. IMAQ Flatten Image to String VI的参数设置对比

    无压缩 jpeg压缩 无损二元包装 仅JPEG压缩时有效 平化类型(指定字符串中存储什么类型的数据)   None JPEG PACKED BINARY Quality Image Image and ...

  5. 最新CentOS6.x下redis安装

    1:软件环境: 系统版本:CentOS release 6.5 redis版本:redis-cli 3.0.5 安装目录:"/usr/local/redis" 下载软件:" ...

  6. poj 1517 u Calculate e

    u Calculate e Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19465   Accepted: 11362   ...

  7. SQL Server 数据类型映射 (ADO.NET)

    SQL Server 数据类型映射 (ADO.NET) .NET Framework 3.5 更新:November 2007 SQL Server 和 .NET Framework 基于不同的类型系 ...

  8. .Net 代码安全保护产品DNGuard HVM使用

    前辈人物写的程序啊! 官方网站:http://www.dnguard.net/index.aspx 官方博客:http://www.cnblogs.com/rick/ (很久没更新了) 原文http: ...

  9. mockjs学习总结(方便前端模拟数据,加快开发效率)

      基本介绍: 在我们前端开发中经常遇到这样的事情,接口没有写好,只能写静态页面,如何才能用很简单的方法模拟后端数据呢?mockjs就干了这件事,而且干的还挺好. 下面是我作为初学者的一些总结经验,期 ...

  10. UVa673 Parentheses Balance

    // UVa673 Parentheses Balance // 题意:输入一个包含()和[]的括号序列,判断是否合法. // 具体递归定义如下:1.空串合法:2.如果A和B都合法,则AB合法:3.如 ...