天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 4|回复: 0

c++操作Excel

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    添加创建文档或打开文档的实现代码:

    void CcontrolExcelView::OnBnClickedButtonOpenFile()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
      
        LPDISPATCH lpDisp = NULL;  
      
        //创建Excel 服务器(启动Excel)  
        if(!ExcelApp.CreateDispatch(_T("Excel.Application"),NULL))  
        {  
            AfxMessageBox(_T("启动Excel服务器失败!"));  
            return;  
        }  
      
        /*判断当前Excel的版本*/  
        CString strExcelVersion = ExcelApp.get_Version();  
        int iStart = 0;  
        strExcelVersion = strExcelVersion.Tokenize(_T("."), iStart);  
        if (_T("11") == strExcelVersion)  
        {  
            //AfxMessageBox(_T("当前Excel的版本是2003。"));  
            GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel2003"));  
        }  
        else if (_T("12") == strExcelVersion)  
        {  
            //AfxMessageBox(_T("当前Excel的版本是2007。"));  
            GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel2007"));  
        }  
        else  
        {  
            //AfxMessageBox(_T("当前Excel的版本是其他版本。"));  
            GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel"));  
        }  
      
        ExcelApp.put_Visible(TRUE);  
        ExcelApp.put_UserControl(TRUE);  
      
        /*得到工作簿容器*/  
        books.AttachDispatch(ExcelApp.get_Workbooks());  
      
        /*打开一个工作簿,如不存在,则新增一个工作簿*/  
        CString strBookPath = m_strPathName;  
        try  
        {  
            /*打开一个工作簿*/  
            lpDisp = books.Open(strBookPath,   
                vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,  
                vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,   
                vtMissing, vtMissing, vtMissing, vtMissing);  
            book.AttachDispatch(lpDisp);  
        }  
        catch(...)  
        {  
            /*增加一个新的工作簿*/  
            lpDisp = books.Add(vtMissing);  
            book.AttachDispatch(lpDisp);  
        }  
      
        /*得到工作簿中的Sheet的容器*/  
        sheets.AttachDispatch(book.get_Sheets());  
        /*打开一个Sheet,如不存在,就新增一个Sheet*/  
        CString strSheetName = _T("NewSheet");  
        try  
        {  
            /*打开一个已有的Sheet*/  
            lpDisp = sheets.get_Item(_variant_t(strSheetName));  
            sheet.AttachDispatch(lpDisp);  
        }  
        catch(...)  
        {  
            /*创建一个新的Sheet*/  
            lpDisp = sheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);  
            sheet.AttachDispatch(lpDisp);  
            sheet.put_Name(strSheetName);  
        }  
    }


    读取单元格的代码

    void CcontrolExcelView::OnBnClickedButtonRead()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
        //获取单元格  
        UpdateData(TRUE);  
        CString strRange;  
        strRange.Format(_T("%d"), m_lRow);  
        strRange = m_strColumn + strRange;  
        //获取range  
        LPDISPATCH lpDisp = NULL;  
        lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));  
        range.AttachDispatch(lpDisp);  
        VARIANT ret = range.get_Value(vtMissing);  
          
        switch (ret.vt)  
        {  
        case VT_R8:  
            {  
                m_strRange.Format(_T("%d"), (int)ret.dblVal);  
            }  
            break;  
      
        case VT_BSTR:  
            {  
                m_strRange = ret.bstrVal;  
            }  
            break;  
      
        case VT_I4:  
            {  
                m_strRange.Format(_T("%ld"), (int)ret.lVal);  
            }  
            break;  
      
        default:  
            {  
      
            }  
            break;  
        }  
        UpdateData(FALSE);  
    }  

    改变单元格边框的实现代码

    void CcontrolExcelView::OnBnClickedButtonStyle()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
        //获取单元格  
        UpdateData(TRUE);  
        CString strRange;  
        strRange.Format(_T("%d"), m_lRow);  
        strRange = m_strColumn + strRange;  
        //获取range  
        LPDISPATCH lpDisp = NULL;  
        lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));  
        range.AttachDispatch(lpDisp);  
      
        // 然后设置外边框   
        // LineStyle=线型(1~13) Weight=线宽 ColorIndex=线的颜色(-4105为自动, 1为黑色)     
        long lColor  = RGB(255, 0, 0);  
        COleVariant varColor(lColor);  
        range.BorderAround(_variant_t(long(3)), 3, 3, vtMissing);//设置边框   
      
    }  

    改变单元格字体的实现代码

    void CcontrolExcelView::OnBnClickedButtonFont()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
        UpdateData(TRUE);  
        CString strRange;  
        strRange.Format(_T("%d"), m_lRow);  
        strRange = m_strColumn + strRange;  
        //获取range  
        LPDISPATCH lpDisp = NULL;  
        lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));  
        range.AttachDispatch(lpDisp);  
      
        CFont0 ft;  
        ft.AttachDispatch(range.get_Font());  
        ft.put_Name(_variant_t(_T("华文行楷")));  
        ft.put_Size(_variant_t(8));  
        ft.put_Color(_variant_t(RGB(255, 0, 0)));  
          
    }  

    改变单元格底色的实现代码

    void CcontrolExcelView::OnBnClickedButtonDise()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
        UpdateData(TRUE);  
        CString strRange;  
        strRange.Format(_T("%d"), m_lRow);  
        strRange = m_strColumn + strRange;  
        //获取range  
        LPDISPATCH lpDisp = NULL;  
        lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));  
        range.AttachDispatch(lpDisp);  
      
        //改变底色  
        Cnterior interior;  
        interior.AttachDispatch(range.get_Interior());  
        interior.put_ColorIndex(_variant_t((long)20));  //将底色改为浅青色  
    }  

    保存文件的实现代码

    void CcontrolExcelView::OnBnClickedButtonSave()  
    {  
        // TODO: 在此添加控件通知处理程序代码  
        book.Save();  
      
        ExcelApp.Quit();  
        //释放  
        range.ReleaseDispatch();  
        sheet.ReleaseDispatch();  
        sheets.ReleaseDispatch();  
        book.ReleaseDispatch();  
        books.ReleaseDispatch();  
        ExcelApp.ReleaseDispatch();  
    }  

     

     

     

     

    c++操作Excel
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:10 , Processed in 0.059593 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表