我的数据都在一个进程里,而且是变化的,我怎样才能把这些数据保存到Excel文件?现在我能保存静态的数据,但是动态的还不行

解决方案 »

  1.   

    你是用什么方法操作的EXCEL??
      

  2.   

    我在程序所在的夹子里建立了一个template模板,然后在程序中以这个模板建ReceiveData.excel文件
      

  3.   

    我把我的程序贴出来吧:
    CNetWatcherViewerDoc::CNetWatcherViewerDoc()
    {
    // TODO: add one-time construction code here

    //创建Excel 2000服务器(启动Excel) 
    if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 

    AfxMessageBox("创建Excel服务失败!"); 
    exit(1); 


    ExcelApp.SetVisible(false); 
    //利用模板文件建立新文档 
    char path[MAX_PATH];
    GetCurrentDirectory(MAX_PATH,path);
    CString strPath = path;
    strPath += "\\template";
    wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
    wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
    //得到Worksheets 
    wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
    //得到sheet1 
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
    //添加模板个数
    for(i=0;i<4;i++){
    wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
    }
    CString str1;
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
    str1 = "通道1";
    wsMysheet.SetName(str1);
    for(i=0;i<wssMysheets.GetCount()-1;i++){
    wsMysheet = wsMysheet.GetNext();
    str1.Format("通道%d",i+2);
    wsMysheet.SetName(str1);
    }
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("通道1")),true);
    //得到全部Cells,此时,rgMyRge是cells的集合 
    rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); 
    m_pRecvThread=AfxBeginThread(Recvdata,this);
    if(m_pRecvThread==NULL){
    AfxMessageBox("Listening Socket Error");
    } for (i=0;i<10;i++)
    {
    str.Format("%d",precvbuf+i);
            rgMyRge.SetItem(_variant_t((long)(i+2)),_variant_t((long)1),_variant_t(str)); 
            }

    strPath = path;
    strPath += "\\ReceiveData.xls";
    wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);

    wbsMyBooks.Close(); rgMyRge.ReleaseDispatch(); 
    wsMysheet.ReleaseDispatch(); 
    wssMysheets.ReleaseDispatch(); 
    wbMyBook.ReleaseDispatch(); 
    wbsMyBooks.ReleaseDispatch(); 
    ExcelApp.ReleaseDispatch(); 
    }
    precvbuf+i这个值的变化在后面的一个进程里,而我想这个值一变化就能输出到Excel中,但是现在是输出完一些数(我怀疑是上次运行的值)Excel就关闭了,所以怎么才能把precvbuf+i这个值输出来呢?谢谢大家
      

  4.   

    加我qq 348728909 或者邮箱[email protected]我做过这个。而且从你的问题看出我们做的好多都是类似的功能