VC++6.0操作excel2007文件封装类CExcelServer

本文介绍了如何使用VC++6.0通过OLE Automation方法操作Excel2007文件,主要讲解了应用_CExcelServer封装类进行读写操作,包括打开、关闭工作簿和工作表,以及设置单元格格式、插入数据等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处:VC++6.0操作excel2007文件封装类CExcelServer

参考文章:
1、VC操作Excel文件编程相关内容总结
2、VC++导出数据到Excel
3、VSTO学习笔记(二)Excel对象模型

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

本文选择了第2中方式。要利用OLE Automation实现对Excel进行操作,必须与Excel对象模型提供的对象进行交互。Excel提供了数百个可能需要与之交互的对象,下面先了解一下编程中常用到的几个对象。

1) Application 对象:代表整个 Microsoft Excel 应用程序。
2) Workbook 对象:代表一个 Microsoft Excel 工作簿,即Excel文件。
3) Workbooks 对象:包含 Microsoft Excel 中当前打开的所有 Workbook 对象。
4) Worksheet 对象:代表一个工作表。一个工作簿中可以包括多个工作表。
5) Worksheets 对象:代表指定或活动工作簿中所有 Worksheet 对象的集合。
6) Range 对象:代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域)。Range对象是Excel操作的重点,对于数据插入、修改、删除都要通过它来实现,Range所表示等同于我们在实际编辑Excel文件时,用鼠标在表单中选择中的区域,选中之后再对其进行单元格修改、删除、合并、设置宽、高、颜色等操作。
7) Chart对象:代表工作簿中的图表。此图表既可以是嵌入的图表(包含在ChartObject对象中),也可以是单独的图表工作表。
8) Charts对象:代表指定或活动工作簿中所有图表工作表的集合。
9) Sheets 对象:代表指定或活动工作簿中所有工作表(可以是Chart对象或者WorkSheet对象)的集合。
10) Font对象:用于设置Range选中的单元格字体格式和颜色。
11) Interior对象:用于设置Range选中的单元格背景格式和颜色。
12) Borders对象:用于设置Range选中的单元格的边框。

其他对象可到msdn去了解:http://msdn.microsoft.com/zh-cn/library/office/ff194068.aspx

调用excel对象方法时,常常会用到一些枚举变量,可以到msdn中查找相关值:http://msdn.microsoft.com/zh-cn/library/office/ff838815.aspx

在操作Excel之前,必须向工程中添加Excel对象,其步骤是: 选择Menu --> View --> ClassWizard,打开ClassWizard 窗口, 选择Add Class -->From a type library,若系统中安装的是Office2000,则在Office 安装目录选择Excel.OLB,如果安装的是Office2003或2007,则选择Excel.exe;然后根据需要选择添加的类(如果要使用下面的CExcelServer封装类,必须加入_Application,Workbooks,_Workbook ,Worksheets,_Work2sheet,Range,Font,Interior,Borders等),向导会在工程中自动生成加入了这些类的Excel.h和Excel.cpp两个文件。在要使用这些导入的类时加入#include "Excel.h"即可。

CExcelServer类头文件

点击(此处)折叠或打开

  1. #if !defined(AFX_EXCELSERVER_H__7495C273_745B_4F87_A729_D057CAA8D2A9__INCLUDED_)
  2. #define AFX_EXCELSERVER_H__7495C273_745B_4F87_A729_D057CAA8D2A9__INCLUDED_

  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // ExcelServer.: header file
  7. //

  8. #include <afxcoll.h>
  9. #include "excel.h"

  10. #define InfoMessageBox(strMsg) \
  11. AfxMessageBox(strMsg, MB_OK | MB_ICONINFORMATION)
  12. #define DebugMessageBox(strMsg) \
  13. AfxMessageBox(strMsg, MB_OK | MB_ICONINFORMATION)
  14. #define WarningMessageBox(strMsg) \
  15. AfxMessageBox(strMsg, MB_OK | MB_ICONWARNING)
  16. #define ErrorMessageBox(strMsg) \
  17. AfxMessageBox(strMsg, MB_OK | MB_ICONERROR)

  18. //Excel文件格式
  19. //http://msdn.microsoft.com/zh-cn/library/office/ff198017.aspx
  20. typedef enum
  21. {
  22.     xlCSV                = 6,        //csv
  23.     xlTextWindows        = 20,        //Windows 文本
  24.     xlTextMSDOS            = 21,        //MSDOS 文本
  25.     xlUnicodeText        = 42,        //Unicode 文本
  26.     xlExcel9795            = 43,        //Excel9795
  27.     xlWorkbookNormal    = -4143,    //常规工作簿
  28.     xlExcel12            = 50,        //Excel 12
  29.     xlWorkbookDefault    = 51,        //默认工作簿
  30. } XlFileFormat;

  31. //水平对齐方式
  32. //http://msdn.microsoft.com/zh-cn/library/office/ff840772.aspx
  33. typedef enum
  34. {
  35.     xlHAlignCenter                    = -4108,    //居中对齐
  36.     xlHAlignCenterAcrossSelection    = 7,        //跨列居中
  37.     xlHAlignDistributed                = -4117,    //分散对齐
  38.     xlHAlignFill                    = 5,        //填充
  39.     xlHAlignGeneral                    = 1,        //按数据类型对齐
  40.     xlHAlignJustify                    = -4130,    //两端对齐
  41.     xlHAlignLeft                    = -4131,    //左对齐
  42.     xlHAlignRight                    = -4152,    //右对齐
  43. } XlHAlign;

  44. //垂直对齐方式
  45. //http://msdn.microsoft.com/zh-cn/library/office/ff835305.aspx
  46. typedef enum
  47. {
  48.     xlVAlignBottom        = -4107,        //靠下 
  49.     xlVAlignCenter        = -4108,        //居中对齐 
  50.     xlVAlignDistributed    = -4117,        //分散对齐 
  51.     xlVAlignJustify        = -4130,        //两端对齐 
  52.     xlVAlignTop            = -4160,        //靠上 
  53. } XlVAlign;

  54. //插入时单元格的移动方向
  55. //http://msdn.microsoft.com/zh-cn/library/office/ff837618.aspx
  56. typedef enum
  57. {
  58.     xlShiftDown        = -4121,        //向下移动单元格
  59.     xlShiftToRight     = -4161,        //向右移动单元格
  60. } XlInsertShiftDirection;

  61. //边框的线条样式
  62. //http://msdn.microsoft.com/zh-cn/library/office/ff821622.aspx
  63. typedef enum
  64. {
  65.     xlContinuous    = 1,        //实线
  66.     xlDash            = -4115,    //虚线
  67.     xlDashDot        = 4,        //点划相间线
  68.     xlDashDotDot    = 5,        //划线后跟两个点
  69.     xlDot            = -4118,    //点式线
  70.     xlDouble        = -4119,    //双线
  71.     xlLineStyleNone    = -4142,    //无线条
  72.     xlSlantDashDot    = 13,        //倾斜的划线
  73. } XlLineStyle;

  74. //边框的粗细
  75. //http://msdn.microsoft.com/zh-cn/library/office/ff197515.aspx
  76. typedef enum
  77. {

  78.     xlHairline        = 1,        //细线(最细的边框)
  79.     xlMedium        = -4138,    //中等
  80.     xlThick            = 4,        //粗(最宽的边框)
  81.     xlThin            = 2,        //
  82. } XlBorderWeight;

  83. /////////////////////////////////////////////////////////////////////////////
  84. // CExcelServer window create by lingdxuyan

  85. class CExcelServer : public CWnd
  86. {
  87. // Construction
  88. public:
  89.     CExcelServer();

  90. // Attributes
  91. private:
  92.     CString            m_strExcelFile;
  93.     CString            m_strWorkSheet;

  94.     _Application    m_oExcelApp;    // Excel程序
  95.     _Worksheet        m_oWorkSheet;    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值