• VS2008中C++打开Excel(MFC)


    VS2008C++打开ExcelMFC)——摘自网络,并加以细化

    第一步:建立project(新建项目)

                           

    英文版

    中文版

     

    选择C++下的MFC Application(基于对话框的项目)

    英文版

    中文版

    选择dialog based(基于对话框),中文。之后点击finish(完成)

     

    第二步:导入EXCEL头文件

     

    英文版

     

    中文版-新建类

     

     

    中文版-新建TypeLib中的MFC类

     

    中文版-导入Excel相关类

     

    选择Project->Add Class->MFC Class From Typelib后,点击Add,进入MFC Class From Typelib Wizard对话框下,

    选择Microsoft Excel 11.0 Object Library<1.5>(我用的是Microsoft Office2003)将上图中Class添加进来。点击finish

     

    并在TExcel.cpp开始添加:

    #include"CApplication.h"

    #include"CRange.h"

    #include"CSheets.h"

    #include"CWorkbook.h"

    #include"CWorkbooks.h"

    #include"CWorksheet.h"

    #include"CWorksheets.h"

    在每一个添加进来的头文件中去掉

    #import "D:\Program Files X64\Microsoft Office\Office15\EXCEL.EXE" no_namespace

    第三步:打开COM口

     

     

    添加AfxOleInit();

    第四步:建一个Button按钮

     

     

    选择Toolbox中的Button在TExcel.rc的IDD_TEXCEL_DIALOG中点击,建立如上图的Button按钮将属性中的Caption修改为“打开Excel”

    第五步:为Button按钮编写程序

    双击“打开Excel”

     

     

     1 void CTExcelDlg::OnBnClickedButton1()
     2 {
     3     // TODO: 在此添加控件通知处理程序代码
     4     CApplication objApp; //判断是否存在EXCEL应用程序
     5     CWorkbooks objBooks;  
     6     CWorkbook objBook;
     7     CWorksheets objSheets;
     8     CWorksheet objSheet;
     9     CRange objRange,usedRange;//单元格获取
    10     VARIANT ret;
    11 
    12     objApp.CreateDispatch(_T("Excel.Application"));//判断是否存在EXCEL应用程序
    13     COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    14     objApp.put_Visible(TRUE);
    15     objApp.put_UserControl(TRUE);
    16     LPDISPATCH pwkbooks=objApp.get_Workbooks();
    17     objBooks.AttachDispatch(pwkbooks,TRUE);
    18     char currentprogrampath[MAX_PATH];
    19     objBooks=objApp.get_Workbooks();
    20     objBook=objBooks.Add(VOptional);
    21     objSheets=objBook.get_Sheets();
    22     CString str;
    23 
    24     str="A1";
    25     objSheet=objSheets.get_Item(COleVariant((short)1));
    26     objRange=objSheet.get_Range(COleVariant(str),COleVariant(str));
    27     objRange=objSheet.get_Range(COleVariant(_T("C4")),COleVariant(_T("B4")));
    28     objRange.put_Formula(COleVariant(_T("=RAND()*100000")));
    29     objRange.put_NumberFormat(COleVariant(_T("$0.00")));
    30     usedRange=objRange.get_EntireColumn();
    31     usedRange.AutoFit();
    32 }
    View Code

     

    第六步:避免Error     2     error C2059: syntax error : ','

    将CRange.h下VARIANT DialogBox()改为VARIANT _DialogBox()

    最后运行:

             

     

  • 相关阅读:
    Silverlight 开发环境
    Silverlight通过代码恢复控件属性到默认值
    msn登陆弹出“msnmsgr.exe无法找到入口”的解决办法
    Silverlight UI Designer has thrown an unhandled exception
    数据访问技术路线图
    Could Not Load Type ‘System.ServiceModel.Activation.HttpModule’
    卸载Macfee杀毒软件之后Outlook无法加载项scanotlk.dll,outlook已经将其禁用
    SQL Server 2008 无法生成FRunCM线程
    excel2007数据挖掘客户端看不到
    Windows Server 2008 R2 激活文件备份与还原方法如下
  • 原文地址:https://www.cnblogs.com/lzx838/p/4090095.html
Copyright © 2020-2023  润新知