本帖最后由 zcnc2012 于 2013-04-09 11:53:14 编辑

解决方案 »

  1.   

    给你个参考程序:
    //把识别结果和真值进行比对,结果写到EXCEL里面
    void WriteToExcel(CString* data , int n)
    {
    /************* WriteToExcel *********************************
    Function  :   把识别结果和真值进行比对,结果写到EXCEL里面
    Algorithms :  比对
    Parameter : CString * data --> 识别结果数组
    Parameter : int n --> 识别结果的个数
    Return    :   
    Date        : 2012/09/01  22:37     **************************/ Range m_ExlRge; 
    _Worksheet m_ExlSheet; 
    Worksheets m_ExlSheets; 
    _Workbook m_ExlBook; 
    Workbooks m_ExlBooks; 
    _Application m_ExlApp;  CString realSN[1200]; // 真实编码 if(!AfxOleInit())///初始化COM库
    {
    AfxMessageBox(_T("初始化COM失败"));

    if(!m_ExlApp.CreateDispatch(_T("Excel.Application"),NULL))   
    {   
    AfxMessageBox(_T("创建Excel服务失败!"));   
    return;   
    }    m_ExlApp.SetVisible(FALSE);   
     
    CString theAppPath;  
    //TOD,O:==标准字符设置
    CString TempPath;
    if (ceshi)
    {
    TempPath = _T("d:\\bz483z.xls");//EXCEL模板的路径    

    else
    {
    TempPath = _T("d:\\bz300.xls");//EXCEL模板的路径    
    } 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页面的名称,第一页从1开始,不是0哦!后面涉及到编号的地方都是如此,要注意阿   
    m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE);   
    //开始向各个单元格填入数据   
    m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格    CString str;
    VARIANT vMsg;
    char cMsg[20]; for (int i = 0; i < 483 ; i++)
    {
    vMsg=m_ExlRge.GetItem(_variant_t((long)(i+1)) ,_variant_t((long)1));
    _bstr_t bMsg=(_bstr_t)vMsg;
    strcpy(cMsg , bMsg);
    str=cMsg;
    realSN[i]=str;
    } CString tem;
    int blankN=0;
    for(int i=0;i<n;i++)
    {
    tem=cmpStr(realSN[i] ,data[i]); m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)1),_variant_t((LPCTSTR)realSN[i]));   
    m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)2),_variant_t((LPCTSTR)data[i]));  
    m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)3),_variant_t((LPCTSTR)tem));    if (tem != _T(""))
    {
    blankN++;
    }
    } tem.Format(_T("张数为 : %d") ,blankN);
    m_ExlRge.SetItem(_variant_t((long)(n+2)),_variant_t((long)3),_variant_t((LPCTSTR)tem));    SYSTEMTIME st;
    GetLocalTime(&st); CString path;
    path.Format(_T("D:\\比对结果\\bidui%02d%02d%02d%02d.xls"),st.wMonth,st.wDay,st.wHour,st.wMinute); //将编辑完成的内容保存为新文件,这里的文件名可以根据需要动态产生。   
    m_ExlSheet.SaveAs( path,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();   
    }
      

  2.   

     先感谢一个,正好解决我的问题,我是好几个数据表内容导入到一个excel中。