CExcelManager--操作Excel表格的类

#pragma once

// write by: Devil Lee
// date: 2014.11.19
// version: 1.0.1.0

#include "CApplication.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
#include "CRange.h"
#include "comdef.h"
#include <vector>
using namespace std;

enum Return_Code
{
	RET_no_excel = -2,
	RET_app_is_not_open = -3,
	RET_excel_is_not_open = -4,
	RET_sheet_is_not_open = -5,
	RET_sheetname_exists = -6,
	RET_outof_sheet_count = -7,
	RET_outof_row_count = -8,
	RET_outof_col_count = -8,

	RET_fail_open = -1,
	RET_fail_delete = -1,
	RET_fail_close = -1,
	RET_fail_set = -1,
	RET_fail_add = -1,
	RET_is_not_string = -1,
	RET_is_not_int = -1,

	RET_success_open = 0,
	RET_success_delete = 0,
	RET_success_close = 0,
	RET_success_set = 0,
	RET_success_add = 0,
	RET_is_string = 0,
	RET_is_int = 0,
};

class CExcelManager
{
public:
	CExcelManager();			// call InitApp()
	~CExcelManager();

	void	InitApp();		// initialize com, and start excel
	void	ReleaseApp();	// excel must be released after use. This function will call CloseSheet, CloseExcel

	int 	OpenExcel(CString pathName);// open excel which name is ...
	int     CloseExcel();				// close opened excel

	CString GetExcelName();
	void	ShowExcel(BOOL bShow);		// show data in excel

	int 	OpenSheet(int index);
	int 	OpenSheet(CString name);
	void	CloseSheet();
	int 	AddSheet(CString name);		// create and load new sheet which will be added to the left
	int 	DeleteSheet(int index);		// delete sheet which index is ...
	int 	DeleteSheet(CString name);	// delete sheet which name is ...
	CString	GetSheetName(int index);	
	int 	SetSheetName(int index, CString name);// set sheet name which index is ...
	int		GetSheetCount();				// get all sheet number count
	BOOL	SheetNameExists(CString name);	// return TRUE: if sheet name aready exist, otherwise: return FALSE

	int 	DeleteCurSheet();				// delete the open sheet
	int     SetCurSheetName(CString name);  // set cur sheet name to ...
	CString GetCurSheetName();				// get cur sheet name

	CString GetCellName(int row, int col);	// get cell name such as A8
	CString	GetCellString(int row, int col);// get cell data in string
	int		GetCellInt(int row, int col);	// get cell data in int
	double	GetCellDouble(int row, int col);// unnecessary

	int		GetRowIndex(int col, CString val);
	int		GetColIndex(int row, CString val);
	void	GetCellIndex(CString val, int& row, int& col);
	int 	GetNextRowIndex(int startRow, int col, BOOL bValid);
	int 	GetNextColIndex(int row, int col, BOOL bValid);

	int 	SetCellString(int row, int col, CString val);	// write string to cell
	int 	SetCellInt(int row, int col, int val);			// write int to cell
	void	SetColumnWidth(int col, int width);	// imperfect, it will change all the column width

	int		IsCellString(long row, long col);	// tell if it is string in cell
	int		IsCellInt(long row, long col);		// tell if it is int int cell

	int		MergeRange(int startRow, int startCol, int endRow, int endCol); // added by Chen'gang
	int		GetRowCount();		// get all column number count
	int		GetColumnCount();	// get all row number count
	void	GetRowData(int row, vector<CString>& data, BOOL bValid = TRUE, int startCol = 1);
	void	GetColumnData(int col, vector<CString>& data, BOOL bValid = TRUE, int startRow = 1);
	void    SaveAs(CString pathName);

	CString GetCurVersion();	// return your excel version, such as: 2007,2003,etc


private:
	COleVariant GetCell(int row, int col);
	int			OpenSheet(char* name);
	char*		GetColumnName(int col);

	BOOL		 m_bInit;
	BOOL		 m_bStart;
	BOOL		 m_bOpenExcel;
	BOOL		 m_bOpenSheet;
	BOOL		 m_bDeleteSheet;
	CString		 m_pathName;

	CWorkbooks   m_workbooks;	
	CWorkbook    m_workbook;		
	CWorksheets  m_worksheets;	
	CWorksheet   m_worksheet;	
	CRange       m_range;		
	CApplication m_app;

	// AnsiתUnicode
	int AnsiToUnicode(char *szTemp, wchar_t* wStr, int size);
	wchar_t* AnsiToUnicode(char *szTemp);

	// UnicodeתAnsi
	int UnicodeToAnsi(wchar_t *wStr, char* szTemp, int size);
	char* UnicodeToAnsi(wchar_t *wStr);
 
};

花了点点时间写的。欢迎使用。。。

下载地址:(今天上传不了,改天有空上传源代码)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

devilthelover

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值