有没有关EXCEL操作的API函数

解决方案 »

  1.   

    用OLE AUTOMATION吧,VC开发内幕里有相关资料
    http://support.microsoft.com/default.aspx?scid=kb;en-us;Q196776
    http://support.microsoft.com/default.aspx?scid=kb;en-us;Q179706
      

  2.   

    给个例子,MSDN上有介绍
    try{
     HRESULT hr;
     CString m_filename[3]={"e:\\templ1.xls","e:\\templ2.xls",
    "e:\\templ3.xls"};
       COleVariant
                      covTrue((short)TRUE),
                      covFalse((short)FALSE),
                      covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);      int index=0;
     index=m_tab.GetCurSel();
     POSITION pos =m_list.GetFirstSelectedItemPosition();
     int position=(int)pos;
     CString id;
     id=m_id[index].GetAt(position-1);  // _Application app;
     Workbooks books;
     _Workbook book; 
     Worksheets sheets;
     _Worksheet sheet;
     Range range;
     Range cols;
     _Application app;  // app is the Excel 9 _Application object          // Start Excel and get Application object...
             if(!app.CreateDispatch("Excel.Application"))
             {
                AfxMessageBox("Couldn't start Excel.");
             }
             else
             {
                //Make Excel Visible and display a message
    //app.SetVisible(TRUE);
    books = app.GetWorkbooks();
    //book = books.Add (covOptional);
        book=books.Open(m_filename[index], // This is a test workbook.
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional);  //Get the first sheet.
    sheets =book.GetSheets();
    sheet = sheets.GetItem(COleVariant((short)1));
    IGetCurrDataPtr pGCD;
    hr=pGCD.CreateInstance(CLSID_GetCurrData);
    if(FAILED(hr))  _com_raise_error (hr);
    CString strSQL;
    ADOREAD::_RecordsetPtr pRS;
    _variant_t vDate[32];
    if(index==0) //故障
    {
    strSQL="SELECT * FROM TBL_REPORT_3 WHERE ID='";
    strSQL+=id+"'";
    pRS=pGCD->ReadData(L"APPADM",L"APPADM",L"DSN=APPADM",
               (_bstr_t)strSQL,L"",L"",
       L"",0);
    if(FAILED(hr))  _com_raise_error (hr);
    if(pRS->EndOfFile==VARIANT_FALSE)
    {
    for(int i=0;i<30;i++)
    {
    vDate[i]=pRS->Fields->GetItem((short)i)->Value;
    }
    }
    CString pos[30]={"B4","F4","I4","B13","E13","H13","J13",
     "D7","E7","D8","E8","D9","E9","D10",
     "E10","D12","E12","H7","I7","H8",
     "I8","H9","I9","H10","I10","H11",
     "I11","H12","I12"};
    for(int i=1;i<30;i++)
    {
    range = sheet.GetRange(COleVariant(pos[i-1]), COleVariant(pos[i-1]));
    range.SetValue(vDate[i]);
    }
    VARIANT vFileName;
    vFileName.vt=VT_BSTR;
    vFileName.bstrVal=(_bstr_t)m_file;
    book.SaveAs(vFileName, // This is a test workbook.
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    0,
    covOptional,
    covOptional,
    covOptional,
    covOptional);
    app.SetVisible(TRUE); 
    //完成
    }else if(index==1) //明细
    {
    strSQL="SELECT * FROM TBL_REPORT_2 WHERE ID='";
    strSQL+=id+"'";
    pRS=pGCD->ReadData(L"APPADM",L"APPADM",L"DSN=APPADM",
               (_bstr_t)strSQL,L"",L"",
       L"",0);
    if(FAILED(hr))  _com_raise_error (hr);
    CString pos[29]={"A5","B5","C5","D5","E5","F5","G5",
     "H5","I5","J5","K5","L5","M5","N5",
     "O5","P5","Q5","R5","S5","T5",
     "U5","V5","W5","X5","Y5","Z5",
     "AA5","AB5","AC5"};
    while(pRS->EndOfFile==VARIANT_FALSE)
    {
    for(int i=0;i<32;i++)
    {
    vDate[i]=pRS->Fields->GetItem((short)i)->Value;
    }
    range=sheet.GetRange(COleVariant("A5"), COleVariant("AC5")); 
    range.Activate();
    range.Insert(COleVariant((short)2));
    for(i=4;i<31;i++)
    {
    range = sheet.GetRange(COleVariant(pos[i-4]), COleVariant(pos[i-4]));
    range.SetValue(vDate[i-1]);
    }
    pRS->MoveNext();
    }
    VARIANT vFileName;
    vFileName.vt=VT_BSTR;
    vFileName.bstrVal=(_bstr_t)m_file;
    book.SaveAs(vFileName, // This is a test workbook.
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    0,
    covOptional,
    covOptional,
    covOptional,
    covOptional);
    app.SetVisible(TRUE); 
    //完成
    }else if(index==2)
    {
    }      
             }
    }catch(_com_error &e)
    {
    AfxMessageBox(e.Description());
    }
      

  3.   

    excel提供com对象,用这个对象来操作,具体察看msdn。
      

  4.   

    vc技术内幕
    http://e.pku.edu.cn
      

  5.   

    http://e.pku.edu.cn这个网页打不开呀,我不能用—APPLICATION这样的,我不能用MFC。我一定要用API或别的,有知道的吗,帮帮忙,我的QQ:63070398