zoukankan      html  css  js  c++  java
  • 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()

    最后运行:

             

     

  • 相关阅读:
    洛谷P1084 [NOIP2012提高组Day2T3]疫情控制
    洛谷P1083 [NOIP2012提高组Day2T2]借教室
    洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
    POJ1692 Crossed Matchings
    洛谷P1315 [NOIP2011提高组Day2T3] 观光公交
    阅读了几个别人写的轮播源码
    js遍历函数
    解决IE6的PNG透明
    04-树5 Root of AVL Tree
    平衡树实现
  • 原文地址:https://www.cnblogs.com/lzx838/p/4090095.html
Copyright © 2011-2022 走看看