注册 登录
编程论坛 VC++/MFC

求助,关于VC++及Excel的问题

花花19891221 发布于 2010-05-14 11:14, 533 次点击
我是一个初学者,对VC++只了解一点点,现在有一个问题想请教一下诸位大侠:
在11.xls中有两个数1和2,用VC++编程,调用这两个数,求两数之和,然后输出到22.xls中,
希望能给出完整程序,不要只是主要程序段,我有可能看不懂,谢谢了!!!
2 回复
#2
songdonghui2011-01-04 20:45
哎,5月份的问题到现在还无人解答,顶一下
#3
Leroy85082011-12-15 13:04
你得问题解决了么,我帮你写了份程序,解决了你的问题,一下是相关程序,如果需要我可以给你整个工程
    _Application    app;
   
    Workbooks        books;
   
    _Workbook        book;
   
    Worksheets        sheets;
   
    _Worksheet        sheet;
   
    Range            range;
   
    Range            rangeFrom;
   
    Range            rangeTo;
   
   
    CString cfgFilePath = GetDllPath( );
    cfgFilePath += "\\1.xlsx";

    LPDISPATCH lpDisp; //接口指针
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);



    //初始化
    if(!AfxOleInit())      
    {
        return ;
    }
    // 创建EXCEL服务器(启动Excel)
    COleException e ;
    if (!app.CreateDispatch(_T("Excel.Application"), &e))
    {
        AfxMessageBox("无法创建Excel应用!");
        e.ReportError();
        return;
    }
    //打开第一个excel表,获取两个数
    books=app.GetWorkbooks();
    lpDisp = books.Open(cfgFilePath,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional
        );
    book.AttachDispatch( lpDisp );
    sheets=book.GetSheets();

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

    range = sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1")));
    COleVariant rValue;
    rValue=COleVariant(range.GetValue2());
    rValue.ChangeType(VT_INT);
    int iValue1 = rValue.intVal;
    range = range.GetRange(COleVariant(_T("B1")),COleVariant(_T("B1")));
    rValue=COleVariant(range.GetValue2());
    rValue.ChangeType(VT_INT);
    int iValue2 = rValue.intVal;



//打开第二个Excel表,写求和结果
    CString cfgFilePath1 = GetDllPath( );
    cfgFilePath1 += "\\2.xlsx";
    lpDisp = books.Open(cfgFilePath1,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional, covOptional, covOptional,
        covOptional, covOptional
        );
    book.AttachDispatch( lpDisp );
    sheets=book.GetSheets();
   
    sheet = sheets.GetItem(COleVariant((short)1));
   
    range = sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("A1")));
    CString strTemp;
    strTemp.Format("%d",iValue1+iValue2);
    range.SetValue2(COleVariant(strTemp));

    book.Save();   
    app.Quit();
    app.ReleaseDispatch();

    AfxMessageBox("结束");
1