最近开发用到了一些小工具,只要是在VC开发的UI里输入的数据要求保存到excel里,输入不能重复,按字段保存,因此这里面就用到了对excel里的读写与查询了。
下面函数先检查下excel文件是否存在,函数里使用了一个模板文件:
void YourClass::CheckBatchFile()
{
CString sFile,sPath, sTmpFile, sErrorStr,sTempFile,sTempFileBk;
int nIndex;
FILE *fp;
BOOL ret;
//get system time
CTime tm;
tm=CTime::GetCurrentTime();
//获取程序所在路径
::GetModuleFileName(NULL, sPath.GetBufferSetLength(_MAX_PATH+1), _MAX_PATH);
nIndex = sPath.ReverseFind('\\');
sFile = sPath.Mid(0,nIndex) + "\\";
sTmpFile = sFile + g_AKeyTemplateName;
sTempFile = sFile;
sTempFileBk = sFile;
sFile += g_AKeyFileName;<span style="font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-family: Arial, Helvetica, sans-serif;">g_AKeyFileName</span><span style="font-family: Arial, Helvetica, sans-serif;">此变量是你所用excel文件的文件名,比如“database.xls”</span>
sTempFile += "Temp.xls";
//bk=0000000+日期.file
sTempFileBk+="0000000"+tm.Format("%Y%m%d%H%M%S")+".file";
fp = fopen((LPSTR)(LPCTSTR)sFile, "r" );
if (fp)
{
fclose(fp);
if(MessageBox(g_AKeyFileName + "文件已经存在,是否清除文件", TEXT("Note"),
MB_ICONEXCLAMATION|MB_YESNO |MB_SYSTEMMODAL) == IDYES)
{
CopyFile(sFile,sTempFileBk, FALSE);
ret = DeleteFile((LPSTR)(LPCTSTR)sFile);
if (!ret)
{
sErrorStr.Format("删除文件%s失败", (LPSTR)(LPCTSTR)g_AKeyFileName);
if (MessageBox(sErrorStr, TEXT(&#