在.net中保存访问文件

时间:2011-08-22 15:25:09

标签: c# .net visual-studio ms-access

如何将.net中的Access报告保存到用户的电脑?我尝试过使用Access.SaveAsAXL,Docmd.OutputTo以及其他一些方法,但无济于事。以下是我最近的尝试。

 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组件返回

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

1 个答案:

答案 0 :(得分:0)

以下代码解决了我的问题。将它放在如上所示的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);