VC++实现对Excel操作(1)

前段时间老大让我做一个项目,要用到Excel操作,将大批十六进制数据分析完数据结构后提取到Excel中,再进行一定处理,然后写工具转换为一定格式的txt文件,最后转换为DB文件。我也是头一次接触这个,先在网上查了些资料,然后进行总结,经过一段时间后,我将原来的对Excel的操作封装成类,结合网上的资料和自己一段时间的实践,才有这些结果,还在进一步完善,因为我是根据需求一步一步完善的。
//下面是.h头文件中的内容
#include "excel.h"
#include <comdef.h>

//下划线种类
#define xlUnderlineStyleDouble -4119
#define xlUnderlineStyleDoubleAccounting 5
#define xlUnderlineStyleNone -4142
#define xlUnderlineStyleSingle 2
#define xlUnderlineStyleSingleAccounting 4
//边框方位
#define xlDiagonalDown 5
#define xlDiagonalUp 6
#define xlEdgeBottom 9
#define xlEdgeLeft 7
#define xlEdgeRight 10
#define xlEdgeTop 8
#define xlInsideHorizontal 12
#define xlInsideVertical 11
//边框划线类型
#define xlContinuous 1
#define xlDash -4115
#define xlDashDot 4
#define xlDashDotDot 5
#define xlDot -4118
#define xlDouble -4119
#define xlLineStyleNone -4142
#define xlNone -4142
#define xlSlantDashDot 13
//字体水平对齐方式
#define xlGeneral 1
#define xlCenter -4108
#define xlLeft -4131
#define xlRight -4152
#define xlFill 5
#define xlJustify -4130
//字体垂直对齐方式
#define xlTop -4160
#define xlBottom -4107
//边框划线的粗细
#define xlHairline 1
#define xlMedium -4138
#define xlThick 4
#define xlThin 2
//背景图案的类型
#define xlSolid 1
#define xlGray8 18
#define xlGray75 -4126
#define xlGray50 -4125
#define xlGray25 -4124
#define xlGray16 17
#define xlHorizontal -4128
#define xlVertical -4166
#define xlDown -4121
#define xlUp -4162
#define xlChecker 9
#define xlSemiGray75 10
#define xlLightHorizontal 11
#define xlLightVertical 12
#define xlLightDown 13
#define xlLightUp 14
#define xlGrid 15
#define xlCrissCross 16

//边框设置参数类
class MyBorder
{
public:
	//线条形状
	short LineStyle;
	//粗线
	short Weight;
	 //颜色
	long Color;
	//构造函数
	MyBorder();
};

//背景设置参数类
class MyBackGroundStyle
{
public:
	//背景颜色
	long Color;
	//背景图案
	short Pattern;
	//背景图案颜色
	long PatternColor;
	//透明与否
	BOOL transparent;
	//构造函数
	MyBackGroundStyle();
};

class MyFont
{
public:
	MyFont();
	//名字
	CString Name;
	long size;
	long ForeColor;
	BOOL Bold;
	//斜体
	BOOL Italic;
	//中间线
	BOOL StrikeThrough;
	BOOL Shadow;
	//下标
	BOOL Subscript;
	//上标
	BOOL Superscript;
	short UnderLine;
	
};

class MyAlignment
{
public:
	short HorizontalAlignment;
	short VerticalAlignment;
	MyAlignment();
};

class MyNumberFormat
{
public:
	MyNumberFormat();
	//设置参数
	CString strValue;
	CString GetTextSetup();
	CString GetNumberSetup(BOOL bSeparator,int iNumDecimal);
	//bInChinese:TRUE-"¥",FALSE-"$"
	CString GetMoneySetup(BOOL bInChinese,int iNumDecimal);
	CString GetDateSetup(BOOL bInChinese);
	CString GetTimeSetup(BOOL bInChinese);
	CString GetGeneralSetup();
	CString GetSpecialNumberSetup(BOOL bInChinese);
	CString GetPercentNumberSetup(int iNumDecimal);
	CString GetFractionNumberSetup(int DownSum,int DownNum);
	CString GetScientificNumberSetup(int iNumDecimal);
	CString GetPostalcodeSetup(int Num);
	CString GetDateTimeSetup(BOOL bInChinese);
};

class CMyExcel  
{
public:
	_Application MyApp;
	_Workbook MyBook;
	_Worksheet MySheet;
	Workbooks MyBooks;
	Worksheets MySheets;
	Range MyRange;
	CString strFilePath;
	CMyExcel();
	virtual ~CMyExcel();
	BOOL Open();
	BOOL Open(CString strFile);
	BOOL OpenSheet(CString strSheet);
	BOOL SetItemText(long Row,long Col,CString strText);
	CString GetItemText(long Row,long Col);
	void Exit();
	void SetVisible(BOOL bVisible);
	BOOL IsFileExist(CString strFn,BOOL bDir);
	void Save();
	void SaveAs(CString strPath);
	void AddSheet(CString strSheet);
	void DeleteSheet123();
	void GetRange(CString strBegin,CString strEnd);
	void AutoColFit();
	void AutoRowFit();
	void SetWrapText(BOOL bTrue);
	void SetFont(MyFont font);
	void GetAllRange();
	void SetMergeCells(BOOL bTrue);
	void SetBackGroundStyle(MyBackGroundStyle BackStyle);
	void SetBorderLine(short position,MyBorder Border);
	void SetAlignment(MyAlignment XMyAlignment);
	long GetRows();
	long GetCols();
	void SetNumberFormat(MyNumberFormat XNumberFormat);
	void SetColumnWidth(int iWidth);
	void SetRowHeight(int iHeight);
	void PrintOut(short numCopy);
	void PrePrintOut(BOOL bEnable);
	void InsertPicture(CString strFilePath);
	void SetBackPicture(CString strFilePath);
	long Find(CString str);
};

 


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
== Excel高级工具 == 增强型插件 全方位提升工作效率 根据工资计算钞票面额张数】【建立工作表目录】【隔行插入行】【区域定位工具】【批量导入图片】 【拆分工作簿】【合并工作簿】【建立文件目录】【选区背景着色】【小写转大写】【大写转小写】 【批量新建或复制工作表】【批量加解密】【生成工资条】【删除工资条】【反向选择】 ___________________________________________________________________________________________ 工具: 【批量导入图片】 功能: 根据名称批量地导入图片 特点: 1.速度快:导入100图片只需要2秒钟 2.位置准:每张图片都导入到名称后面的单元格中,且刚好和单元格一样大,不会让多张图片重叠 3.大小灵活:导入的图片可以随心所欲定义其大小,且所有图片都占用相同的大小空间。但却保持图片导入前的比例,不会变形。 4.名称灵活:可以使用近似匹配。例如有两张名为“诺基亚8310”、“诺基亚7600”的图片,只需要在单元格输入“诺基亚”就行了,导入图片时可以将“诺基亚”开头的图片全部导入。 5.数量灵活:对于多个图片符合同一单元格名称的状况,可以将所有图片全部导入到其右边的单元格。 6.附件功能:图片导入到工作表后,将Excel默认的图片名“图片1”、“图片2”还原为图片本来的名称。 工具: 【隔行插入行】 功能: 对工作表隔行插入行,或者隔列插入列 特点: 1.可以每隔M行插入N行,其中N和M可以自己指定 2.可以每隔M列插入N列,其中N和M可以自己指定 3.起始行或结束行或者起始列、结束列也可以自己指定 工具: 【区域定位工具】 功能: 可以基于用户指定的条件选择相应的单元格,弥补Excel的不足 特点: 1.对于数值,可以使用所有比较运算符查找数据,Excel本身的定位不能定位于大于、小于某值的区域。 2.对于文本,可以定位于指定的字符,也可以定位于指定字符以外的所有字符。且支持通配符。 3.定位于可以指定区域,包括“选择区域”、“已用区域”和“可见区域”。这比Excel本身的查找更全面。 4.支持双条件查找,例如定位于从60到100的所有数据区域。或者不包括60到100的所有区域。 工具: 【根据工资计算钞票面额张数】 功能: 根据工资计算需要发工资时需要多少张100元、50元、20元、10元等等面额的钞票数量 特点: 1.可以选择一个区域进行操作,批量计算。 2.钞票的面额可以自己定义。 3.不仅计算每个人员需要的钞票张数,还对所有面额钞票汇总。 工具: 【建立工作表目录】 功能: 将当前工用簿中所有工作表建立目录,且产生链接 特点: 1.一键生成工作表目录。 2.单击目录中任意表名可以跳转至该工作表。 工具: 【建立文件目录】 功能: 将指定目录下所有文件建立目录于工作表中 特点: 1.可自由定义目标文件的路径。 2.允许选择目录是否产生链接。 3.可以对子目录中的文件建立目录,不管文件夹中有多少个子文件夹。 4.可以多次执行工具,从而将建立不同文件夹中的文件目录。程序自动将其分置于不同的列中。 工具: 【工作簿拆分】 功能: 将指定工作簿的每个工作表拆分成单独的工作簿 特点: 1.自由选定存放路径。 2.提是拆分后是否保留公式的选项。 3.可以自由定义参与拆分的工作表名 工具: 【工作表拆分】 功能: 将当前工作表的数据按条件拆分成多个工作表 特点: 1.可以自由选择条件所有列。 2.可以设定标题行数,标题不参与拆分。 3.可以自由定义折分条件。 4.可以选择折分成多工作表后是否保留原有公式。 工具: 【合并工作簿】 功能: 将多个具有相同格式的工作簿中所有工作表合并为一个工作簿的多工作表中,也可以将一个工作簿的所有工作表合并到一个工作表 特点: 1.多工作簿合并时,可以自由指定待合并工作簿的目录路径。 2.可以选择将多工作簿合并到同工作表还是同工作簿。 3.对于多个工作簿中具有同名工作表时,可以选择是否合并工作表。 4.进以定义参与合并的工作簿名。即所选文件夹中存在多工作簿,可以对部分执行合并。 5.如果仅对一个工作簿中的工作表进行合并,那么选择“多工作表合并”。 6.对工作表合并时,允许选择参与合并的工作表名。即既可全部参与合并也可以部分工作表参与合并。 7.合并前需要将当前工作簿保存。 工具: 【选区背景着色】 功能: 将选择区域或者选区所在行、列用醒目的颜色标识,便于查看 特点: 1.着色的对象有“选区”、“行”、“列”以及“行列”可选。 2.可选颜色包括6种。 3.可以随时启用、禁用着色功能。 4.程序具有记忆功能。即保存上次的设置。 工具: 【小写转大写】 功能: 将阿拉伯数字转换成人民币大写形式 特点: 1.可以批量操作。 2.可以同时选择多个区域再执行工具。 3.几百个单元格数据瞬间完成转换。 工具: 【大写转小写】 功能: 将人民币大写转换成阿拉伯数字 特点: 1.可以批量操作。 2.可以同时选择多个区域再执行工具。 3.几百个单元格数据瞬间完成转换。 工具: 【批量新建或复制工作表】 功能: 批量新建或者工作表 特点: 1.操作灵活:可以选择新建或者复制。 2.批量操作:可以一次性建立或者复制1到255个。 3.高速操作:建立或者复制255个工作表三秒钟不到即可完成。 4.方向自由:可以定义新表在当前表之前或者之后。 5.命名灵活:对于表名有规律的创建或者复制新表,可以选择“从单元格创建”。 工具: 【批量加解密】 功能: 对当前工作簿中所有工作表或者指定的部分工作表进行加、解密 特点: 1.可以灵活的指定加、解密工作表名。 2.对100个工作表加密或者解密不超过3秒钟。 3.本工个适用于多工作表使用相同密码保护,否则请手工操作。 4.其中解密是知道密码的前提下进行批量解密,而非破解。 工具: 【生成工资条】 功能: 高效的工资条设计工具 特点: 1.瞬间将工资明细表生成工资条,方便打印并裁剪。 2.生成的工资与工资条之间有一个空行,供剪裁用。可以自定义其高度。 3.可以自己定义工资条头的行数,不同公司可能有不需要标题行。 4.只要类似工资条的信息都可以用本工具生成,例社保资料、成绩通知条等等。 工具: 【删除工资条】 功能: 删除前一工具生成的工资条头 特点: 1.可以由用户指定标题行数,使其适用面更广。 2.瞬间删除工资条标题信息,还原为明细表。 工具: 【反向选择】 功能: 对当前数据区域进行反向选择,即定位于未选择的区域 特点: 1.可以由用户指定标题行数,使其适用面更广。 2.瞬间删除工资条标题信息,还原为明细表。 备注:工具通用于Excel 2003和 EXCEL 2007 工具安装: 必须先解压,然后双击“安装.EXE" 如果需要删除工具,则双击“删除.EXE”

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值