zoukankan      html  css  js  c++  java
  • 使用MFC读写Excel

    _Application m_ExlApp;   //组件服务器的各个classes
        _Workbook m_ExlBook;
        Workbooks m_ExlBooks;
        _Worksheet m_ExlSheet;
        Worksheets m_ExlSheets;
        //    LPDISPATCH lpDisp;
        Range m_ExlRge, usedRange;
     
           if(!m_ExlApp.CreateDispatch("Excel.Application",NULL))
           
                  AfxMessageBox("创建Excel服务失败!"); 
                  return
           }
     
           //设置为可见 
           m_ExlApp.SetVisible(TRUE); 
     
           ///////////////////下面得到应用程序所在的路径/////////////////// 
           CString theAppPath,theAppName; 
           char Path[MAX_PATH]; 
     
           GetModuleFileName(NULL,Path,MAX_PATH);//得到应用程序的全路径 
           theAppPath=(CString)Path; 
     
           theAppName=AfxGetApp()->m_pszAppName; 
           theAppName+=".exe"
     
           //把最后的文件名去掉 
           int length1,length2; 
     
           length1=theAppPath.GetLength(); 
           length2=theAppName.GetLength(); 
     
           theAppPath.Delete(length1-length2,length2); 
        //////////////////////////////////////////////////////////////// 
     
        COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
     
        // Get the Workbooks collection so that you can add a new workbook
        m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks());  // 得到Workbooks
        m_ExlBook = m_ExlBooks.Add(covOptional);     // 得到Workbook
     
     //      m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(),TRUE); 
     
     //      m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)TempPath),TRUE);//加载EXCEL模板 
     
           m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);//加载Sheet页面 
     
           //添加新的Sheet页面 
           m_ExlSheets.Add(vtMissing,vtMissing,_variant_t((long)1),vtMissing); 
     
           //删除第二个Sheet页面 
           m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)2)),TRUE); 
           m_ExlSheet.Delete(); 
     
           //把第一个Sheet页面的名字改变为TestSheet 
           m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE); 
           m_ExlSheet.SetName("TestSheet"); 
     
     
           ///////合并第一行单元格A1至D1////// 
     
           //加载要合并的单元格 
           m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t("A1"),_variant_t("D1")),TRUE); 
     
           m_ExlRge.Merge(_variant_t((long)0)); 
     
           ////////设置表格内容//////// 
     
           m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格 
     
           m_ExlRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("数学系研究生课程统计")); 
     
           m_ExlRge.SetItem(_variant_t((long)2),_variant_t((long)1),_variant_t("课程名")); 
           m_ExlRge.SetItem(_variant_t((long)2),_variant_t((long)2),_variant_t("课时")); 
           m_ExlRge.SetItem(_variant_t((long)2),_variant_t((long)3),_variant_t("难度")); 
           m_ExlRge.SetItem(_variant_t((long)2),_variant_t((long)4),_variant_t("教学方式")); 
     
           m_ExlRge.SetItem(_variant_t((long)3),_variant_t((long)1),_variant_t("泛函分析")); 
           m_ExlRge.SetItem(_variant_t((long)3),_variant_t((long)2),_variant_t("60")); 
           m_ExlRge.SetItem(_variant_t((long)3),_variant_t((long)3),_variant_t("普通")); 
           m_ExlRge.SetItem(_variant_t((long)3),_variant_t((long)4),_variant_t("老师讲课")); 
     
           m_ExlRge.SetItem(_variant_t((long)4),_variant_t((long)1),_variant_t("微分流形")); 
           m_ExlRge.SetItem(_variant_t((long)4),_variant_t((long)2),_variant_t("40")); 
           m_ExlRge.SetItem(_variant_t((long)4),_variant_t((long)3),_variant_t("变态难")); 
           m_ExlRge.SetItem(_variant_t((long)4),_variant_t((long)4),_variant_t("自学")); 
     
           m_ExlRge.SetItem(_variant_t((long)5),_variant_t((long)1),_variant_t("二阶椭圆型方程与方程组")); 
           m_ExlRge.SetItem(_variant_t((long)5),_variant_t((long)2),_variant_t("60")); 
           m_ExlRge.SetItem(_variant_t((long)5),_variant_t((long)3),_variant_t("很难")); 
           m_ExlRge.SetItem(_variant_t((long)5),_variant_t((long)4),_variant_t("讨论")); 
     
     
           m_ExlRge.AttachDispatch(m_ExlSheet.GetUsedRange());//加载已使用的单元格 
     
           m_ExlRge.SetWrapText(_variant_t((long)1));//设置单元格内的文本为自动换行 
     
           //设置齐方式为水平垂直居中 
           //水平对齐:默认=1,居中=-4108,左=-4131,右=-4152 
           //垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107 
           m_ExlRge.SetHorizontalAlignment(_variant_t((long)-4108)); 
           m_ExlRge.SetVerticalAlignment(_variant_t((long)-4108)); 
     
           ///////设置整体的字体、字号及颜色////// 
     
           Font ft; 
     
           ft.AttachDispatch(m_ExlRge.GetFont()); 
     
           ft.SetName(_variant_t("宋体"));//字体 
           ft.SetColorIndex(_variant_t((long)11));//字的颜色 
           ft.SetSize(_variant_t((long)12));//字号 
     
           ///////////设置标题字体及颜色////////// 
     
           m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t("A1"),_variant_t("D1"))); 
     
           ft.AttachDispatch(m_ExlRge.GetFont()); 
     
           ft.SetBold(_variant_t((long)1));//粗体 
           ft.SetSize(_variant_t((long)13)); 
           ft.SetColorIndex(_variant_t((long)2)); 
     
           CellFormat cf; 
           cf.AttachDispatch(m_ExlRge.GetCells()); 
     
           //////////////设置底色///////////////// 
     
           Interior it; 
     
           it.AttachDispatch(m_ExlRge.GetInterior()); 
     
           it.SetColorIndex(_variant_t((long)11));//标题底色 
     
           ////表格内容的底色//// 
     
           m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t("A2"),_variant_t("D5"))); 
     
           it.AttachDispatch(m_ExlRge.GetInterior()); 
     
           it.SetColorIndex(_variant_t((long)15)); 
     
     
           //////////////为表格设置边框///////////// 
     
           Range UnitRge; 
           CString CellName; 
     
           for(int i=1;i<=4;i++) 
           
                  for(int j=1;j<=4;j++) 
                  {     
                         CellName.Format("%c%d",j+64,i);//单元格的名称 
     
                         UnitRge.AttachDispatch(m_ExlRge.GetRange(_variant_t(CellName),_variant_t(CellName)));//加载单元格 
     
                         //LineStyle=线型 Weight=线宽 ColorIndex=线的颜色(-4105为自动) 
                         UnitRge.BorderAround(_variant_t((long)1),_variant_t((long)2),_variant_t((long)-4105),vtMissing);//设置边框 
                  
           }
     
     
           //释放对象(相当重要!) 
           m_ExlRge.ReleaseDispatch(); 
           m_ExlSheet.ReleaseDispatch(); 
           m_ExlSheets.ReleaseDispatch(); 
           m_ExlBook.ReleaseDispatch(); 
           m_ExlBooks.ReleaseDispatch(); 
           //m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错 
           m_ExlApp.ReleaseDispatch(); 
     
           //退出程序 m_ExlApp.Quit(); 
  • 相关阅读:
    20175310 《Java程序设计》第3周学习总结
    IDEA学生免费申请教程
    20175310 《Java程序设计》第2周学习总结
    在虚拟机中使用中文输入法
    VMware虚拟机将英文改成中文的方法
    20175310 《Java程序设计》第1周学习总结(1)安装虚拟机
    20175310 《Java程序设计》第1周学习总结(2)
    Java 开源 CMS :magnolia
    开源网络监控管理系统:OpenNMS
    开源摄影机:Axiom Camera
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4614760.html
Copyright © 2011-2022 走看看