2011-08-22 199 views
1

如何将.net中的Access报告保存到用户的PC?我试过使用Access.SaveAsAXL,Docmd.OutputTo和其他几种方式,但无济于事。以下是我最近的尝试。将存取文件保存为.net

string dbname = "D:\\filename.mdb"; 

     Microsoft.Office.Interop.Access.Application oAccess = new Microsoft.Office.Interop.Access.Application(); 
     oAccess.OpenCurrentDatabase(dbname, true); 
     oAccess.Visible = true; 
     var acFormatXLS = "Microsoft Excel (*.xls)"; 
     string id = "tblJobs.JobID=" + (Convert.ToInt32(GetMaxJobID())).ToString(); 

     try 
     { 
      oAccess.Run("BuildXAxisTimeLine", Convert.ToInt32(GetMaxJobID())); 

      oAccess.SaveAsAXL(Microsoft.Office.Interop.Access.AcObjectType.acReport, "rptChartData", "D:\\report.xls"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      //oAccess.CloseCurrentDatabase(); 
     } 

我收到的错误是:

HRESULT E_FAIL已从调用返回至COM组件

任何帮助,将不胜感激。谢谢。

回答

0

followig代码解决了我的问题。将它放在try部分,如上所示,而不是oAccess.SaveAsAxl代码行,并在.Run代码行下。

oAccess.DoCmd.OpenReport("rptChartData", Microsoft.Office.Interop.Access.AcView.acViewPreview, null,id); 
       oAccess.DoCmd.OutputTo(Microsoft.Office.Interop.Access.AcOutputObjectType.acOutputReport, "rptChartData", acFormatXLS, "D:\\reportname.pdf",false, null, null);