VC6.0操作EXCEL2003归纳总结

一.引入自动化库

点击菜单栏查看->建立类向导->添加库

 

二.在工程对应的APP类中加入下面方框中的语句

三.在程序相应的部分添加内容,使得可以对EXCEL2003操作,本文在DEBUG目录下新建了两个文件夹,一个用来装模板文件(名称为模板,模板名称为template),一个用来装EXCEL输出文件(名称为结果)。实现的功能为:

点击按钮,向EXCEL中的A1到A10单元添加粗体的“HELLO WORLD!”,然后保存在结果文件夹。

 

void CMy002Dlg::OnButton1()

{

 

       // TODO: Add your control notification handler code here

       /**********************以下为确定导出数据文件的名称***********************/

       //查找文件夹中已有的文件,文件名依次递增例如EXCEL 2011-9-18 0001;EXCEL2011-9-18 00002

       TCHAR pBuf[MAX_PATH];

       CString appath;

       GetModuleFileName(NULL, pBuf, MAX_PATH);

 

       (strrchr(pBuf, '\\'))[1] = 0;

       appath=pBuf;

       appath+="结果\\*.xls";

 

 

       CString name,left,right,mid;

       CFileFind finder;//CFileFind类用于寻找文件

       BOOL working=finder.FindFile(appath);

       while(working)

       {

              working=finder.FindNextFile();

              name=finder.GetFileName();

 

       }

      

       //left=EXCEL2011-9-18 right=0001.xls mid=0001(Cstring类) mid1=0001(int类)

       int pos=name.Find(" ");

       left=name.Left(pos);

       right=name.Right(name.GetLength()-pos-1);

       int pos1=right.Find(".");

       mid=right.Left(pos1);

       int m_mid1=atoi(mid);

      

       //m_lei表示名称 temp表示时间 temp1=名称+时间

       CString temp,temp1,m_kongge,m_name,m_lei;

       CTime time;

       time=time.GetCurrentTime();

       temp=time.Format("%Y-%m-%d");

       m_kongge=" ";

       m_lei="EXCEL表";

       temp1=m_lei+temp;

 

       if(temp1==left)

       {    

              m_mid1++;

              CString m_mid;

              m_mid.Format("%.4d",m_mid1);

              m_name=m_lei+temp+m_kongge+m_mid;

       }

       else

       {

              CString m_d;

              m_d.Format("%.4d",1);

              m_name=m_lei+temp+m_kongge+m_d;

       }

      

 

       /**************以上为确定导出数据文件的名称****************************/

 

       GetModuleFileName(NULL, pBuf, MAX_PATH);

       (strrchr(pBuf, '\\'))[1] = 0;

       appath=pBuf;

       appath+="结果\\";

 

       //打开文件对话框的初始化

       CFileDialog fileDlg(FALSE,NULL,m_name);

       fileDlg.m_ofn.lpstrFilter="EXCEL Files(*.xls)\0*.xls\0All Files(*.*)\0*.*\0\0";

       fileDlg.m_ofn.lpstrDefExt="XLS";

       fileDlg.m_ofn.lpstrInitialDir=appath;

 

       if(IDOK==fileDlg.DoModal())

       {

 

              //向EXCEL文件中写入数据信息

              _Application app;//应用程序对象

              Workbooks books;//工作簿集合

              _Workbook book;//工作簿

              Worksheets sheets;//工作表集合

              _Worksheet sheet;//工作表

              Range range;//单元格区域

              Font font;//字体

              Range cols;//列区域

 

              /*

              COleVariant类为VARIANT数据类型的包装,在自动化程序中,通常都使用

              VARIANT数据类型进行参数传递。故下列程序中,函数参数都是通过COleVariant

              类来转换了的。

              */

              COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

             

              //covOptional 可选参数的VARIANT类型

              if( !app.CreateDispatch("Excel.Application") )

              {

              this->MessageBox("无法创建Excel应用!");

              return;

              }

 

              app.SetVisible(false); 

              app.SetUserControl(true);

 

             

 

              //利用模板文件建立EXCEL

              //模板在在debug目录下的模板文件夹内模板名字为template

              TCHAR pBuf[MAX_PATH];

              CString strPath;

              GetModuleFileName(NULL, pBuf, MAX_PATH);

              (strrchr(pBuf, _T('\\')))[1] = 0;

              strPath=pBuf;

              strPath+="模板\\template";

 

              /*两种新建工作簿的方法,如下*/

              //books=app.GetWorkbooks();

              //book=books.Add((COleVariant)strPath);

              //sheets=book.GetSheets();

             

              books.AttachDispatch(app.GetWorkbooks(),true); 

              book.AttachDispatch(books.Add(COleVariant(strPath)));

              //得到Worksheets 

              sheets.AttachDispatch(book.GetWorksheets(),true);

 

 

 

              sheet=sheets.GetItem(COleVariant((short)1));

              //向EXCEL中A1到A10添加HELLO WORLD!

              CString ming,hao,danyuan;

              ming="A";

              for(int i=1;i<=10;i++)

              {

                     hao.Format("%d",i);

                     danyuan=ming+hao;

                     range=sheet.GetRange(COleVariant(danyuan),COleVariant(danyuan));

                     range.SetValue2(COleVariant("HELLO EXCEL!"));

                     font=range.GetFont();

                     font.SetBold(COleVariant((short)TRUE));

              }

 

              //向单位格中添加货币格式的数字

              /*range=sheet.GetRange(COleVariant("A2"),COleVariant("A2"));

              range.SetFormula(COleVariant("=RAND()*100000"));

              range.SetNumberFormat(COleVariant("$0.00"));*/

             

              cols=range.GetEntireColumn();

              cols.AutoFit();//列自动调整大小

 

              CString path1=fileDlg.GetPathName();

             

              //保存工作簿

              sheet.SaveAs(path1,covOptional,

              covOptional,covOptional,

              covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);

              }

 

 

 

}

 

最后生成的EXCEL文件为

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值