此类方便了VC对EXCEL的操作。功能有:创建指定名称的EXCEL、打开新的Excel文件、打开名为strSheet的表、打开strFile文件、设置(ROW,COL)的字符strText、取得(ROW,COL)的字符、显示excel、查找此文件是否存在、保存为strPath、添加新的表、列自动展开、行自动展开、设置自动换行、设置字体、设置当前单元格颜色、合并单元格、设置背景、设置边框、设置对齐方式、设置列宽、设置行高等等。这样功能使用十分方便。源码可以直接使用,添加到项目中。有任何问题可评论或私信。
//使用说明:
//此类的设计方便了VC对EXCEL的操作。主要功能如下:
// A.打开EXCEL文档进行修改和保存
// B.新建EXCEL文档进行操作存储
// B.读取和填写EXCEL中的数据
// C.设置EXCEL中边框的参数
// D.设置EXCEL中背景颜色的参数
// E.打印和预览
// F.自动回收内存
// G.在显示之后,此类将自动关闭不能进行其它相关的操作
//---------------------------------------------------------
#include "excel9.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
//字体垂直对齐方式
// Download by http://www.codefans.net
#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 MyBackStyle
{
public:
//背景颜色
long Color;
//背景图案
short Pattern;
//背景图案颜色
long PatternColor;
//透明不透明
BOOL transparent;
//构造函数
MyBackStyle();
};
//字体设置参数类
class MyFont
{
public:
//名字
CString Name;
//大小
long size;
//前景
long ForeColor;
//粗体
BOOL Bold;
//斜体
BOOL Italic;
//中间线
BOOL Strikethrough;
//阴影
BOOL Shadow;
//下标
BOOL Subscript;
//上标
BOOL Superscricp;
//下划线
short Underline;
//构造函数
MyFont();
};
//文字对齐方式设置参数类
class MyAlignment
{
public:
//水平对齐
short HorizontalAlignment;
//垂直对齐
short VerticalAlignment;
//构造函数
MyAlignment();
};
//列数据类型的设置参数类
class MyNumberFormat
{
public:
MyNumberFormat();
//设置参数
CString strValue;
//返回文本类型的设置
CString GetText();
//返回数字格式的设置
//blnBox: 使用分隔符 RightSum: 小数位数
CString GetNumber(BOOL blnBox,int RightSum);
//返回货币格式的设置
//blnChinese: TURE:"¥",FALSE:"$"
//RightSum: 小数位数
CString GetMoney(BOOL blnChinese,int RightSum);
//返回日期格式的设置
//blnChinese: TURE:"年月日",FALSE:"-"
CString GetDate(BOOL blnChinese);
//返回时间格式的设置
//blnChinese: TURE:"时分秒",FALSE:":"
CString GetTime(BOOL blnChinese);
//返回常规设置
CString GetGeneral();
//返回特殊数字的设置
//blnChinese: TURE:大写,FALSE:小写
CString GetDBNumber(BOOL blnChinese);
//返回百分数的设置
//RightSum: 小数位数
CString GetPercentNumBer(int RightSum);
//返回分数的设置
//DownSum:分母位数 DownNum(0): 固定分母数(0)
CString GetFractionNumBer(int DownSum,int DownNum);
//返回科学计数的设置
//RightSum: 小数位数
CString GetTechNumBer(int RightSum);
//返回6位邮政编码格式
//Sum: 固定邮政编码的位数
CString GetPost(int Sum);
//返回日期加时间的设置
//blnChinese: TURE:"年月日时分秒",FALSE:"-:"
CString GetDateTime(BOOL blnChinese);
};
class CMyExcel
{
public:
//Excel的应用
_Application MyApp;
_Workbook MyBook;
_Worksheet MySheet;
Workbooks MyBooks;
Worksheets MySheets;
Range MyRange;
CString strFilePath;
excelFont myfont;
//构造函数
CMyExcel();
//析构函数
~CMyExcel();
//创建指定名称的EXCEL
BOOL CreateExcel(CString strFile);
//创建指定名称的EXCEL
BOOL OpenExcel(CString strFile);
//打开新的Excel文件
BOOL Open();
//打开strFile文件
BOOL Open(CString strFile);
//打开名为strSheet的表
BOOL OpenSheet(CString strSheet);
//设置(ROW,COL)的字符strText
BOOL SetItemText(long Row,long Col,CString strText);
//取得(ROW,COL)的字符
CString GetItemText(long Row,long Col);
//退出excel
void Exit();
//显示excel
void SetVisible(BOOL blnVisible);
//查找此文件是否存在
BOOL IsFileExist(CString strFn, BOOL bDir);
//自动保存(针对打开已经存在的文件)
void Save();
//保存为strPath
void SaveAs(CString strPath);
//添加新的表
void AddSheet(CString strSheet);
//得到新的选择区域
void GetRange(CString strBegin,CString strEnd);
//列自动展开
void AutoColFit();
//行自动展开
void AutoRowFit();
//设置自动换行
void SetWrapText(BOOL blnTrue);
//设置字体
void SetFont(MyFont font);
//设置当前单元格颜色
void SetCurColor(int nrow, int ncolumn, COLORREF color);
//得到整个区域
void AutoRange();
//合并单元格
void SetMergeCells(BOOL blnTrue);
//设置背景
void SetBackStyle(MyBackStyle BackStyle);
//设置边框
void SetBorderLine(short Xposition,MyBorder XBorder);
//设置对齐方式
void SetAlignment(MyAlignment XMyAlignment);
//得到列数
long GetRowS();
//得到行数
long GetColS();
//设置数据的类型
void SetNumberFormat(MyNumberFormat XNumberFormat);
//设置列宽
void SetColumnWidth(int intWidth);
//设置行高
void SetRowHeight(int intHeight);
//打印
//CopySum:打印的份数
void PrintOut(short CopySum);
//打印预览
//blnEnable:TRUE-允许修改 FALSE-不允许
void PrePrintOut(BOOL blnEnable);
//插入图片
//strFilePath:文件名路径
void InsertPicture(CString strFilePath);
//设置背景图片
//strFilePath:文件名路径
void SetBackPicture(CString strFilePath);
//返回当前程序所在路径
CString GetAppPath();
// 得到当前文件的行数
long GetCurRow();
// 得到当前文件的列数
long GetCurCol();
};
#include"pch.h"
//#include "stdafx.h"
#include "MyExcel.h"
CMyExcel::CMyExcel()
{
strFilePath=_T("");
}
CString CMyExcel::GetAppPath()
{
char lpFileName[MAX_PATH];
GetModuleFileName(AfxGetInstanceHandle(),lpFileName,MAX_PATH);
CString strFileName = lpFileName;
int nIndex = strFileName.ReverseFind ('\\');
CString strPath;
if (nIndex > 0)
strPath = strFileName.Left (nIndex);
else
strPath = "";
return strPath;
}
CMyExcel::~CMyExcel()
{
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
MyRange.ReleaseDispatch();
myfont.ReleaseDispatch();
MySheet.ReleaseDispatch();
MySheets.ReleaseDispatch();
MyBook.Close(covFalse,_variant_t(strFilePath),covOptional);
MyBook.ReleaseDispatch();
MyBooks.Close();
MyBooks.ReleaseDispatch();
MyApp.Quit();
MyApp.ReleaseDispatch();
CoUninitialize();
}
//创建指定名称的EXCEL
BOOL CMyExcel::CreateExcel(CString strFile)
{
CoInitialize(NULL);
if (!MyApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox(_T("EXCEL初始化时出错!"),MB_OK|MB_ICONERROR);
return FALSE;
}
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
MyBooks.AttachDispatch(MyApp.GetWorkbooks(),TRUE);
MyBook.AttachDispatch(MyBooks.Add(covOptional),TRUE);
MySheets.AttachDispatch(MyBook.GetWorksheets(),TRUE);
MySheet.AttachDispatch(MySheets.GetItem(_variant_t((long)1)), TRUE);
MySheet.SetName("Sheet1");
MyRange.AttachDispatch(MySheet.GetCells(),TRUE);
return TRUE;
}
BOOL CMyExcel::OpenExcel(CString strFile)
{
CoInitialize(NULL);
if (!MyApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox(_T("EXCEL初始化时出错!"),MB_OK|MB_ICONERROR);
return FALSE;
}
LPDISPATCH lpDisp=NULL;
MyBooks=MyApp.GetWorkbooks();
MyBook = MyBooks.Open(strFile, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,vtMissing);
MySheets = MyBook.GetSheets();
// MySheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);
MySheet.AttachDispatch(MySheets.GetItem(_variant_t((long)1)), TRUE);
MySheet.SetName("Sheet1");
lpDisp=MySheet.GetCells();
MyRange.AttachDispatch(lpDisp,TRUE);
return TRUE;
}
BOOL CMyExcel::Open()
{
LPDISPATCH lpDisp=NULL;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
CoInitialize(NULL);
if (!MyApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox(_T("EXCEL初始化时出错!"),MB_OK|MB_ICONERROR);
return FALSE;
}
lpDisp=MyApp.GetWorkbooks();
MyBooks.AttachDispatch(lpDisp,TRUE);
lpDisp = MyBooks.Add(covOptional);
MyBook.AttachDispatch(lpDisp,TRUE);
lpDisp=MyBook.GetWorksheets();
MySheets.AttachDispatch(lpDisp,TRUE);
return TRUE;
}
BOOL CMyExcel::Open(CString strFile)
{
CoInitialize(NULL);
if (!MyApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox(_T("EXCEL初始化时出错!"),MB_OK|MB_ICONERROR);
return FALSE;
}
MyBooks=MyApp.GetWorkbooks();
MyBook = MyBooks.Open(strFile, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,vtMissing);
MySheets = MyBook.GetSheets();
// MySheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);
MySheet.AttachDispatch(MySheets.GetItem(_variant_t((long)1)), TRUE);
MySheet.SetName("Sheet1");
return TRUE;
}
BOOL CMyExcel::OpenSheet(CString strSheet)
{
LPDISPATCH lpDisp=NULL;
long len;
len=MySheets.GetCount();
for(long i=1;i<=len;i++)
{
lpDisp=MySheets.GetItem((_variant_t)(long)i);
MySheet.AttachDispatch(lpDisp,TRUE);
CString str=MySheet.GetName();
if(MySheet.GetName()==strSheet)
{
lpDisp=MySheet.GetCells();
MyRange.AttachDispatch(lpDisp,TRUE);
//myfont.AttachDispatch(MyRange.GetFont());
return TRUE;
}
}
return FALSE;
}
BOOL CMyExcel::SetItemText(long Row,long Col,CString strText)
{
/*
long lRow=0,lCol=0;
lRow=GetRowS();
lCol=GetColS();
if(Row>lRow ||Col>lCol)
{
CString strText;
strText.Format("由于(%d,%d)已经超过了(%d,%d)的范围,所以在(%d,%d)设置失败!"
,Row,Col,lRow,lCol,Row,Col);
AfxMessageBox(_T(strText),MB_OK|MB_ICONERROR);
return FALSE;
}
*/
MyRange.SetItem(_variant_t(Row), _variant_t(Col), _variant_t(strText));
return TRUE;
}
//设置当前单元格颜色
void CMyExcel::SetCurColor(int nrow, int ncolumn, COLORREF color)
{
// Range rgRgeValue;
// rgRgeValue.AttachDispatch(MyRange.GetItem(_variant_t(long(nrow)), _variant_t(long(ncolumn))).pdispVal);
// myfont.AttachDispatch(rgRgeValue.GetFont());
// myfont.SetColor(COleVariant(long(0XFF0000)));
// Interior interclr;
// rgRgeValue.AttachDispatch(MySheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1"))));
// _variant_t vtVal = rgRgeValue.GetValue();
// interclr.AttachDispatch(rgRgeValue.GetInterior());
// interclr.SetColorIndex(_variant_t((long)255));
// interclr.ReleaseDispatch();
// rgRgeValue.ReleaseDispatch();
/*
VARIANT lpDisp=MyRange.GetItem(_variant_t(long(nrow)), _variant_t(long(ncolumn)));
Range rgRgeValue;
rgRgeValue.AttachDispatch(lpDisp.pdispVal, TRUE);
_variant_t vtVal = rgRgeValue.GetValue();
excelFont ft;
ft.AttachDispatch(rgRgeValue.GetFont());
ft.SetColor(COleVariant(long(255)));
ft.ReleaseDispatch();
rgRgeValue.ReleaseDispatch();
*/
CString mstr = "";
int rem = ncolumn%26;
int nnn = ncolumn/26;
char cc = 'A'+ rem - 1;
char cd = 'A'+ nnn - 1;
if (ncolumn < 26)
{
mstr.Format("%c%d", cc, nrow);
}else{
mstr.Format("%c%c%d", cd, cc, nrow);
}
Range rgRgeValue;
rgRgeValue.AttachDispatch(MyRange.GetRange(COleVariant(mstr), COleVariant(mstr)));
_variant_t vtVal = rgRgeValue.GetValue();
Interior interclr;
interclr.AttachDispatch(rgRgeValue.GetInterior());
interclr.SetColor(_variant_t(long(color)));
interclr.ReleaseDispatch();
rgRgeValue.ReleaseDispatch();
}
CString CMyExcel::GetItemText(long Row,long Col)
{
CString strValue=_T("");
/*
long lRow=0,lCol=0;
lRow=GetRowS();
lCol=GetColS();
if(Row>lRow ||Col>lCol)
{
CString strText;
strText.Format("由于(%d,%d)已经超过了(%d,%d)的范围,所以返回空值"
,Row,Col,lRow,lCol,Row,Col);
AfxMessageBox(_T(strText),MB_OK|MB_ICONERROR);
return strValue;
}
*/
VARIANT lpDisp=MyRange.GetItem(_variant_t(Row), _variant_t(Col));
Range rgRgeValue;
rgRgeValue.AttachDispatch(lpDisp.pdispVal, TRUE);
_variant_t vtVal = rgRgeValue.GetValue();
if (vtVal.vt == VT_EMPTY)
{
rgRgeValue.ReleaseDispatch();
strValue = _T("");
rgRgeValue.ReleaseDispatch();
return strValue;
}
vtVal.ChangeType(VT_BSTR);
strValue= vtVal.bstrVal;
rgRgeValue.ReleaseDispatch();
return strValue;
}
void CMyExcel::SaveAs(CString strPath)
{
if(IsFileExist(strPath,FALSE)==TRUE)
DeleteFile(strPath);
MyBook.SaveAs(_variant_t(strPath),vtMissing,vtMissing,vtMissing,vtMissing,vtMissing
,0,vtMissing,vtMissing,vtMissing,vtMissing);
strFilePath=strPath;
// AfxMessageBox(_T("Excel保存成功"),MB_OK|MB_ICONINFORMATION);
}
void CMyExcel::Save()
{
MyBook.Save();
// AfxMessageBox(_T("Excel保存成功"),MB_OK|MB_ICONINFORMATION);
}
void CMyExcel::AddSheet(CString strSheet)
{
LPDISPATCH lpDisp=NULL;
lpDisp=MySheets.Add(vtMissing,vtMissing,vtMissing,vtMissing);
MySheet.AttachDispatch(lpDisp,TRUE);
MySheet.SetName(strSheet);
lpDisp=MySheet.GetCells();
MyRange.AttachDispatch(lpDisp,TRUE);
}
void CMyExcel::GetRange(CString strBegin,CString strEnd)
{
MyRange=MySheet.GetRange(_variant_t(strBegin),_variant_t(strEnd));
}
void CMyExcel::AutoColFit()
{
Range rg=MyRange.GetEntireColumn();
rg.AutoFit();
rg.ReleaseDispatch();
}
void CMyExcel::AutoRowFit()
{
Range rg=MyRange.GetEntireRow();
rg.AutoFit();
rg.ReleaseDispatch();
}
void CMyExcel::SetWrapText(BOOL blnTrue)
{
MyRange.SetWrapText((_variant_t)(short)blnTrue);
}
void CMyExcel::SetVisible(BOOL blnVisible)
{
if(blnVisible==TRUE)
if(strFilePath!="")
{
if(IsFileExist(strFilePath,FALSE))
{
Exit();
ShellExecute(NULL,"open",strFilePath,NULL,NULL,SW_SHOW);
}
else
{
CString strName;
strName="路径"+strFilePath+"错误,不能打开显示!";
AfxMessageBox(strFilePath,MB_OK|MB_ICONINFORMATION);
}
}
else
{
AfxMessageBox("请先存文件后,方可打开!",MB_OK|MB_ICONINFORMATION);
}
}
void CMyExcel::SetFont(MyFont font)
{
excelFont f=MyRange.GetFont();
f.SetName(_variant_t(font.Name));
f.SetShadow((_variant_t)(short)font.Shadow);
f.SetSize((_variant_t)(short)font.size);
f.SetUnderline((_variant_t)(short)font.Underline);
f.SetBold((_variant_t)(short)font.Bold);
f.SetColor((_variant_t)(long)font.ForeColor);
f.SetItalic((_variant_t)(short)font.Italic);
f.SetStrikethrough((_variant_t)(short)font.Strikethrough);
f.SetSubscript((_variant_t)(short)font.Subscript);
f.SetSuperscript((_variant_t)(short)font.Subscript);
f.ReleaseDispatch();
}
void CMyExcel::SetAlignment(MyAlignment XMyAlignment)
{
MyRange.SetHorizontalAlignment((_variant_t)(short)XMyAlignment.HorizontalAlignment);
MyRange.SetVerticalAlignment((_variant_t)(short)XMyAlignment.VerticalAlignment);
}
void CMyExcel::AutoRange()
{
LPDISPATCH lpDisp=NULL;
lpDisp=MySheet.GetCells();
MyRange.AttachDispatch(lpDisp,TRUE);
}
void CMyExcel::SetMergeCells(BOOL blnTrue)
{
if(blnTrue==TRUE)
{
int i,j;
long Row=GetRowS();
long Col=GetColS();
for(j=2;j<=Col;j++) SetItemText(1,j,"");
for(i=2;i<=Row;i++)
for(j=1;j<=Col;j++)
SetItemText(i,j,"");
}
MyRange.SetMergeCells((_variant_t)(short)blnTrue);
}
void CMyExcel::SetBackStyle(MyBackStyle BackStyle)
{
LPDISPATCH lpDisp=NULL;
Interior Itor;
lpDisp=MyRange.GetInterior();
Itor.AttachDispatch(lpDisp,TRUE);
if(BackStyle.transparent==TRUE)
Itor.SetColorIndex((_variant_t)(short)xlNone);
else
{
Itor.SetColor((_variant_t)(long)BackStyle.Color);
Itor.SetPattern((_variant_t)(short)BackStyle.Pattern);
Itor.SetPatternColor((_variant_t)(long)BackStyle.PatternColor);
}
Itor.ReleaseDispatch();
}
void CMyExcel::SetBorderLine(short Xposition,MyBorder XBorder)
{
long Row,Col;
Row=GetRowS();
Col=GetColS();
if(Row==1)
if(Xposition==xlInsideHorizontal) return;
if(Col==1)
if(Xposition==xlInsideVertical) return;
LPDISPATCH lpDisp=NULL;
lpDisp=MyRange.GetBorders();
Borders bds;
bds.AttachDispatch(lpDisp);
Border bd;
lpDisp=bds.GetItem((long)Xposition);
bd.AttachDispatch(lpDisp);
bd.SetLineStyle((_variant_t)(short)XBorder.LineStyle);
bd.SetColor((_variant_t)(long)XBorder.Color);
bd.SetWeight((_variant_t)(short)XBorder.Weight);
bd.ReleaseDispatch();
bds.ReleaseDispatch();
}
long CMyExcel::GetRowS()
{
long len=0;
Range rg=MyRange.GetEntireRow();
len=rg.GetCount();
rg.ReleaseDispatch();
return len;
}
long CMyExcel::GetColS()
{
long len=0;
Range rg=MyRange.GetEntireColumn();
len=rg.GetCount();
rg.ReleaseDispatch();
return len;
}
long CMyExcel::GetCurRow()
{
Range rg = MySheet.GetUsedRange();
rg = rg.GetRows();
long nRow = rg.GetCount();
return nRow;
}
long CMyExcel::GetCurCol()
{
Range rg = MySheet.GetUsedRange();
rg = rg.GetColumns();
long nCol = rg.GetCount();
return nCol;
}
void CMyExcel::SetNumberFormat(MyNumberFormat XNumberFormat)
{
CString strText=XNumberFormat.strValue;
MyRange.SetNumberFormat(_variant_t(strText));
}
void CMyExcel::SetColumnWidth(int intWidth)
{
double f=intWidth/8.08;
MyRange.SetColumnWidth((_variant_t)(double)f);
}
void CMyExcel::SetRowHeight(int intHeight)
{
double f=intHeight/8.08;
MyRange.SetRowHeight((_variant_t)(double)f);
}
void CMyExcel::InsertPicture(CString strFilePath)
{
LPDISPATCH lpDisp=NULL;
if(IsFileExist(strFilePath,FALSE))
{
// lpDisp=MySheet.get
}
}
void CMyExcel::SetBackPicture(CString strFilePath)
{
if(IsFileExist(strFilePath,FALSE)==TRUE)
MySheet.SetBackgroundPicture(strFilePath);
}
void CMyExcel::PrintOut(short CopySum)
{
if(CopySum<=0) CopySum=1;
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
MySheet.PrintOut(vtMissing,vtMissing,(_variant_t)(short)CopySum,vtMissing
,vtMissing,vtMissing,covTrue,vtMissing);
}
void CMyExcel::PrePrintOut(BOOL blnEnable)
{
COleVariant covOptional((short)blnEnable);
MySheet.PrintPreview(covOptional);
}
BOOL CMyExcel::IsFileExist(CString strFn, BOOL bDir)
{
HANDLE h;
LPWIN32_FIND_DATA pFD=new WIN32_FIND_DATA;
BOOL bFound=FALSE;
if(pFD)
{
h=FindFirstFile(strFn,pFD);
bFound=(h!=INVALID_HANDLE_VALUE);
if(bFound)
{
if(bDir)
bFound= (pFD->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=NULL;
FindClose(h);
}
delete pFD;
}
return bFound;
}
void CMyExcel::Exit()
{
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
MyRange.ReleaseDispatch();
myfont.ReleaseDispatch();
MySheet.ReleaseDispatch();
MySheets.ReleaseDispatch();
MyBook.Close(covFalse,_variant_t(strFilePath),covOptional);
MyBook.ReleaseDispatch();
MyBooks.Close();
MyBooks.ReleaseDispatch();
MyApp.Quit();
MyApp.ReleaseDispatch();
CoUninitialize();
}
MyFont::MyFont()
{
//名字
Name="Microsoft Sans Serif";
//大小
size=12;
//前景
ForeColor=RGB(0,0,0);
//粗体
Bold=FALSE;
//斜体
Italic=FALSE;
//中间线
Strikethrough=FALSE;
//阴影
Shadow=FALSE;
//下标
Subscript=FALSE;
//上标
Superscricp=FALSE;
//下划线
Underline=xlUnderlineStyleNone;
}
MyBorder::MyBorder()
{
//线条形状
LineStyle=xlContinuous;
//粗线
Weight=xlThin;
//颜色
Color=RGB(0,0,0);
}
MyBackStyle::MyBackStyle()
{
//背景颜色
Color=RGB(255,255,255);
//背景图案
Pattern=xlSolid;
//背景图案颜色
PatternColor=RGB(255,0,0);
//默认为不透明
transparent=FALSE;
}
MyAlignment::MyAlignment()
{
//普通
HorizontalAlignment=xlGeneral;
//居中对齐
VerticalAlignment=xlCenter;
}
MyNumberFormat::MyNumberFormat()
{
strValue="G/通用格式";
}
CString MyNumberFormat::GetText()
{
strValue="@";
return strValue;
}
CString MyNumberFormat::GetGeneral()
{
strValue="G/通用格式";
return strValue;
}
CString MyNumberFormat::GetNumber(BOOL blnBox,int RightSum)
{
CString str="0";
int i;
if(RightSum<0) RightSum=0;
if(blnBox==TRUE)
{
if(RightSum==0)
{
str="#,##0_ ";
strValue=str;
return strValue;
}
else
{
str="#,##0.";
for(i=0;i<RightSum;i++) str=str+"0";
str=str+"_ ";
strValue=str;
return strValue;
}
}
else
{
if(RightSum==0)
{
str="0_ ";
strValue=str;
return strValue;
}
else
{
str="0.";
for(i=0;i<RightSum;i++) str=str+"0";
str=str+"_ ";
strValue=str;
return strValue;
}
}
}
CString MyNumberFormat::GetDate(BOOL blnChinese)
{
if(blnChinese==TRUE)
strValue="yyyy\"年\"m\"月\"d\"日\";@";
else
strValue="yyyy-m-d;@";
return strValue;
}
CString MyNumberFormat::GetDateTime(BOOL blnChinese)
{
if(blnChinese==TRUE)
strValue="yyyy\"年\"m\"月\"d\"日\" h\"时\"mm\"分\"ss\"秒\";@";
else
strValue="yyyy-m-d h:mm:ss;@";
return strValue;
}
CString MyNumberFormat::GetDBNumber(BOOL blnChinese)
{
if(blnChinese==TRUE)
strValue="[DBNum1][$-804]G/通用格式";
else
strValue="[DBNum2][$-804]G/通用格式";
return strValue;
}
CString MyNumberFormat::GetFractionNumBer(int DownSum,int DownNum)
{
CString str;
int i;
if(DownNum>0 && DownSum>0)
{
AfxMessageBox("分母位数和固定数只能设置一个,默认返回分母位数的设置!"
,MB_ICONINFORMATION|MB_OK);
}
if(DownSum<=0)
{
if(DownNum<=0)
{
str="# ?/1";
strValue=str;
return strValue;
}
else
{
str.Format("# ?/%d",DownNum);
strValue=str;
return strValue;
}
}
else
{
str="# ?/";
for(i=0;i<DownSum;i++) str=str+"?";
strValue=str;
return strValue;
}
}
CString MyNumberFormat::GetMoney(BOOL blnChinese,int RightSum)
{
CString str;
int i;
if(RightSum<=0) RightSum=0;
if(blnChinese==TRUE)
{
if(RightSum==0)
{
str="#,##0";
strValue="¥"+str+";"+"¥-"+str;
return strValue;
}
else
{
str="#,##0.";
for(i=0;i<RightSum;i++) str=str+"0";
strValue="¥"+str+";"+"¥-"+str;
return strValue;
}
}
else
{
if(RightSum==0)
{
str="#,##0";
strValue="$"+str+";"+"$-"+str;
return strValue;
}
else
{
str="#,##0.";
for(i=0;i<RightSum;i++) str=str+"0";
strValue="$"+str+";"+"$-"+str;
return strValue;
}
}
}
CString MyNumberFormat::GetPercentNumBer(int RightSum)
{
CString str;
int i;
if(RightSum<=0) RightSum=0;
if(RightSum==0)
{
str="0%";
strValue=str;
return strValue;
}
else
{
str="0.";
for(i=0;i<RightSum;i++) str=str+"0";
strValue=str+"%";
return strValue;
}
}
CString MyNumberFormat::GetTechNumBer(int RightSum)
{
CString str;
int i;
if(RightSum<=0) RightSum=0;
str="0.";
for(i=0;i<RightSum;i++) str=str+"0";
strValue=str+"E+00";
return strValue;
}
CString MyNumberFormat::GetTime(BOOL blnChinese)
{
if(blnChinese==TRUE)
{
strValue="h\"时\"mm\"分\"ss\"秒\";@";
return strValue;
}
else
{
strValue="h:mm:ss;@";
return strValue;
}
}
CString MyNumberFormat::GetPost(int Sum)
{
int i;
CString str="";
if(Sum<=0) Sum=1;
for(i=0;i<Sum;i++)
str=str+"0";
strValue=str;
return strValue;
}