我是在VS2005下用C#实现的,将一个Access数据库导出到指定的Excel文件中,调试成功完全没有问题。
但是当我用iis发布之后,在执行Access.ApplicationClass oAccess = new Access.ApplicationClass();的时候就出异常了,也没办法调试,因为我在vs里面运行时完全可以的。我的系统是FAT的,应该不是权限的问题。代码如下:
        Access.ApplicationClass oAccess = new Access.ApplicationClass();
        oAccess.Visible = false;
        try
        {  
            oAccess.OpenCurrentDatabase(Database.Getdir() + "App_Data\\server.mdb", false, "");
            //导出到excel   
            oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport, Access.AcSpreadSheetType.acSpreadsheetTypeExcel9, "Client", Database.Getdir() + "data\\server.xls", true, null, null);
           
            oAccess.CloseCurrentDatabase();
            oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oAccess);
            oAccess = null;
            return "data\\server.xls";
        }
        catch (Exception ex)
        {
            return "no.aspx";
        }
        finally
        {
            GC.Collect(); 
        }

解决方案 »

  1.   

    什么异常
    用Excel.Application xlApp=null;
    xlApp=new Excel.Application();
    Excel.Workbooks workbooks=xlApp.Workbooks;
    试试
    导出方法
      

  2.   

    楼主可以参考一下求将access文件导出为excel文件的完整程序
      

  3.   

    仅供参考:
      //导出Excel
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode("中文名称", System.Text.Encoding.UTF8) + ".xls\"");
            Response.Charset = "gb2312";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/ms-excel";
            //Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); 
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
            GridView1.AllowPaging = false;//导出前先取消分页,以便能将所有数据导出
            DataBindData();//然后在重新绑定
            GridView1.RenderControl(htmlWriter);
            Response.Write(stringWriter.ToString());
            Response.End();
            GridView1.AllowPaging = true;
            DataBindData();
        }
    //----------------------最后别忘了这个-------------------------------------
    //重新一个空的VerifyRenderingInServerForm方法
        public override void VerifyRenderingInServerForm(Control control)
        {
            //base.VerifyRenderingInServerForm(control);
        }
      

  4.   

    如果要进EXCEL,是有行数限制的,以前的好象是65536行,EXCEL2007可以达到行1048576
    1个方法是行数不够就分多个工作表
    2、导出为CSV文件,本质是文本文件,可以不限行数,用法如下
    SELECT * INTO [3#csv] IN 'D:\'[Text;] FROM b_Account[3#csv]为文件名,实际表示的是3.csv, 
    'D:\' 为文件路径
    [Text;] 表示驱动为文本文件,该项不要改动CSV文件也会自动用EXCEL打开