求大神~VC++\MFC:MFC读取Excel文档,具体看下面吧,该如何处理

求大神~~VC++\MFC:MFC读取Excel文档,具体看下面吧
我做了个MFC,我要读Excel的资料(读Excel的学生名字,从B1开始读,如B1、B2....读到B(n),就是读到没名字的时候停了,我用c++的STL的矢量容器保存着~然后把这些容器资料存在新建的Excel文档里,从B1,C1,D1,E1....)求大神怎么从读Excel实现这些功能,具体要用那些函数,函数的参数具体是什么意思呢??求帮忙啊??能把代码写下来最好了?最好带有注释.....

------解决方案--------------------
给你两篇文章看看吧。

http://www.vcfans.com/2010/08/vs2010-mfc-excel-file-in-the-data-analysis.html

http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html
------解决方案--------------------
如果不要求excel的排版格式,只是单纯的表格,就建个*.csv文件,其实就是文本文件,然后每个item用逗号隔开即可,excel打开该文件是以表格形式展现的。
这样读写都很方便
------解决方案--------------------
使用BasicExcel类,在codejeck上搜索一下
------解决方案--------------------
参考一下吧。需要预先引入EXCEL组件
C/C++ code
void CShipTrackQueryDlg::OnExport() 
{
    Range m_ExlRge; 
    _Worksheet m_ExlSheet; 
    Worksheets m_ExlSheets; 
    _Workbook m_ExlBook; 
    Workbooks m_ExlBooks; 
    _Application m_ExlApp; 
    if(!m_ExlApp.CreateDispatch("Excel.Application",NULL)) 
    { 
        AfxMessageBox("创建Excel服务失败!"); 
        return; 
    } 
    
    CFileDialog fileDialog(FALSE,"SOP",NULL,OFN_HIDEREADONLY,"本船轨迹文件(*.SOP)|*.SOP||");
    CString SavePath;
    if (fileDialog.DoModal() == IDOK)
    {
        SavePath = fileDialog.GetPathName();
    }
    else
    {
        return; 
    }
    //设置为不可见,这样就不会弹出EXCEL窗口了 
    m_ExlApp.SetVisible(FALSE); 
    ///////////////////下面得到应用程序所在的路径///////////////////     
    
    CString TempPath = GetModulePath()+"ShipPosReport.xls";//物标信息文件路径 
    
    m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(),TRUE); 
    
    m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)TempPath),TRUE);//加载文件 
    
    m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);//加载Sheet页面 
    m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE); 
    m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格 
    m_ExlRge.SetItem(_variant_t((long)(1)),_variant_t((long)2),_variant_t(m_sMMSI));
    m_ExlRge.SetItem(_variant_t((long)(1)),_variant_t((long)4),_variant_t(m_sShipName));

    ELATLONGFMT eLatLongFmt = theApp.m_sysINIFile.GetLatLongConfig().eLatLongFmt;
    long lItenIndex = 3,lRecordIndex = 1;
    int nSize = m_PosList.GetItemCount();
    for (int nIdx = 0; nIdx < nSize; nIdx++)
    {
        if(!m_PosList.GetCheck(nIdx))
            continue;
        if(nIdx < nSize-2)
        {
            Range rangeSelect;  
            CString sIdx;
            sIdx.Format("A%d",lItenIndex+1);
            rangeSelect.AttachDispatch(m_ExlSheet.GetRange(_variant_t(sIdx),_variant_t(sIdx)),TRUE);  
            Range rangeInsert = rangeSelect.GetEntireRow();
            //这里特别说明一下-4121,在ASP.NET和VB等工具下,表示xlShiftDown,指将行向下挤,VC下没找到,所以只能用直接的数值了  
            rangeInsert.Insert(COleVariant((long)-4121),vtMissing);   
            rangeSelect.ReleaseDispatch();   
            rangeInsert.ReleaseDispatch();  
        }
        
        m_ExlRge.SetItem(_variant_t(lItenIndex),_variant_t((long)1),_variant_t((long)lRecordIndex++));
        CString sTime = m_PosList.GetItemText(nIdx,1);
        m_ExlRge.SetItem(_variant_t((long)(lItenIndex)),_variant_t((long)2),_variant_t(sTime));
        double dLat = ::CoordFormatStr2Double(m_PosList.GetItemText(nIdx,6),true);
        CString sTemp = ::CoordFormatDouble2Str(dLat,true,FMT_SECOND);
        sTemp.Replace("°","-");
        sTemp.Replace("'","-");
        sTemp.Replace("\"","");
        m_ExlRge.SetItem(_variant_t(lItenIndex),_variant_t((long)3),_variant_t(sTemp));
        double dLong = ::CoordFormatStr2Double(m_PosList.GetItemText(nIdx,7),false);
        sTemp = ::CoordFormatDouble2Str(dLong,false,FMT_SECOND);
        sTemp.Replace("°","-");
        sTemp.Replace("'","-");
        sTemp.Replace("\"","");
        m_ExlRge.SetItem(_variant_t(lItenIndex),_variant_t((long)4),_variant_t(sTemp));

        m_ExlRge.SetItem(_variant_t((long)(lItenIndex)),_variant_t((long)5),_variant_t(m_PosList.GetItemText(nIdx,2)));
        m_ExlRge.SetItem(_variant_t((long)(lItenIndex)),_variant_t((long)6),_variant_t(m_PosList.GetItemText(nIdx,3)));
        lItenIndex++;
    }
    ::DeleteFile(SavePath);
    m_ExlSheet.SaveAs(SavePath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
    //释放对象
    m_ExlRge.ReleaseDispatch(); 
    m_ExlSheet.ReleaseDispatch(); 
    m_ExlSheets.ReleaseDispatch(); 
    m_ExlBook.ReleaseDispatch(); 
    m_ExlBooks.ReleaseDispatch(); 
    //m_ExlApp一定要退出程序,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错 
    m_ExlApp.Quit(); 
    m_ExlApp.ReleaseDispatch(); 
    AfxMessageBox("航迹导出完成。");
}