我在VC中通过自动化生成一个excel文件(或打开一个已有的文件),在程序运行的过程中编辑文件。但编辑后的文件不知道怎么保存下来。怎么办?

解决方案 »

  1.   

    _Application ExcelApp; 
    Workbooks wbsMyBooks; 
    _Workbook wbMyBook; 
    Worksheets wssMysheets; 
    _Worksheet wsMysheet;  if (!ExcelApp.CreateDispatch("Excel.Application")) 

    AfxMessageBox("创建Excel服务失败!"); 
    return 1;
    }  wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
    //AfxMessageBox(excelfilename);
    wbMyBook.AttachDispatch(wbsMyBooks.Open(excelfilename,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional),// Open has 13 parameters
    true); 
    wbMyBook.Save();
      

  2.   

    http://www.vchelp.net/vchelp/archive.asp?type_id=42&class_id=1&cata_id=10&article_id=749http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=193203
      

  3.   

    LPDISPATCH lpDisp;
    lpDisp=GetIDispatch();//获取
    TCHAR szTempPath[MAX_PATH],szTempFile[MAX_PATH];
        DWORD dwResult=::GetTempPath(MAX_PATH,szTempPath);
    GetTempFileName(szTempPath,_T("TelStar_"),0,szTempFile);
    CString strTempDocPath;
    strTempDocPath=szTempFile;

    USES_CONVERSION;
    WCHAR* wcPathName=T2W(szTempFile);
    IStorage* pStorage=NULL;
    BOOL bSuccess=FALSE;
    if(SUCCEEDED(StgCreateDocfile(wcPathName,STGM_READWRITE|STGM_SHARE_EXCLUSIVE|STGM_CREATE,0,&pStorage)))
    {
    IPersistStorage* pPersistStorage=NULL;
    if(SUCCEEDED(lpDisp->QueryInterface(IID_IPersistStorage,(void**)&pPersistStorage)))
    {
    if(SUCCEEDED(OleSave(pPersistStorage,pStorage,FALSE)))
    {
    pPersistStorage->SaveCompleted(NULL);
    }
    pPersistStorage->Release();
    }
    pStorage->Release();
    }
      

  4.   

    http://www.vckbase.com/document/viewdoc/?id=1168
    VC中调用EXECL模板生成报表
    作者:叶利华
      void CExceltestDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    _Application ExcelApp; 
    Workbooks wbsMyBooks; 
    _Workbook wbMyBook; 
    Worksheets wssMysheets; 
    _Worksheet wsMysheet; 
    Range rgMyRge; 
    //创建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 += "\\template1";
    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(int 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);
    //设置1行1列的单元的值
    CString str=_TEXT("21:12");
    rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)3),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)3),_variant_t(str));
      rgMyRge.SetItem(_variant_t((long)7),_variant_t((long)4),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)8),_variant_t((long)4),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)9),_variant_t((long)4),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)10),_variant_t((long)4),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)11),_variant_t((long)4),_variant_t(str)); 
    rgMyRge.SetItem(_variant_t((long)12),_variant_t((long)4),_variant_t(str));
    //将表格保存
    strPath = path;
    strPath += "\\ylhexcel.xls";
    wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,
    vtMissing,vtMissing,vtMissing,vtMissing);
    ExcelApp.SetVisible(true); 
    wbMyBook.PrintPreview(_variant_t(false)); 
    //释放对象 
    rgMyRge.ReleaseDispatch(); 
    wsMysheet.ReleaseDispatch(); 
    wssMysheets.ReleaseDispatch(); 
    wbMyBook.ReleaseDispatch(); 
    wbsMyBooks.ReleaseDispatch(); 
    ExcelApp.ReleaseDispatch(); 
    }