首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

点击导出文件事件后整个系统无法使用,该如何解决

2012-01-19 
点击导出文件事件后整个系统无法使用//点击事件privatevoidIBtnExport_Click(objectsender,System.Web.UI.

点击导出文件事件后整个系统无法使用
//点击事件
private   void   IBtnExport_Click(object   sender,   System.Web.UI.ImageClickEventArgs   e)
{
GDbSjCdcb   nDcb   =   new   GDbSjCdcb();
JExcel.ExportToExcel(nDcb.SelDataSetMxData(myUser.DwJb,myUser.DwDqId,myUser.DwId,LbDqid.Text,LbDateB.Text,LbDateE.Text,LbLrdw.Text,LbLrr.Text,LbBbn.Text), "dRecord ", "excel ", "downinfo.xls ",this);
}


//打印类
namespace   JGeneral
{
    public   class   JExcel
    {
        static   public   void   ExportToExcel(DataSet   ds,   string   strTableName,   string   typeid,   string   FileName,   Page   page)   //从给定的Dataset和tablename中导出
        {
            HttpResponse   resp;
            resp   =   page.Response;
            resp.ContentEncoding   =   System.Text.Encoding.GetEncoding( "GB2312 ");
            resp.AppendHeader( "Content-Disposition ",   "attachment;filename= "   +   FileName);
            string   colHeaders   =   " ",   ls_item   =   " ";
            int   i   =   0;

            //定义表对象与行对像,同时用DataSet对其值进行初始化  
            DataTable   dt   =   ds.Tables[0];
            DataRow[]   myRow   =   dt.Select( " ");
            //   typeid== "1 "时导出为EXCEL格式文件;typeid== "2 "时导出为XML格式文件  
            if   (typeid   ==   "excel ")
            {
                //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符  
                for   (i   =   0;   i   <   dt.Columns.Count   -   2;   i++)
                    colHeaders   +=   dt.Columns[i].Caption.ToString()   +   "\t ";
                colHeaders   +=   dt.Columns[i].Caption.ToString()   +   "\n ";
                //向HTTP输出流中写入取得的数据信息  
                resp.Write(colHeaders);
                //逐行处理数据      
                foreach   (DataRow   row   in   myRow)
                {
                    //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n  
                    for   (i   =   0;   i   <   dt.Columns.Count   -   2;   i++)
                        ls_item   +=   row[i].ToString()   +   "\t ";
                    ls_item   +=   row[i].ToString()   +   "\n ";


                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据          
                    resp.Write(ls_item);
                    ls_item   =   " ";
                }
            }
            else
            {
                if   (typeid   ==   "xml ")
                {
                    //从DataSet中直接导出XML数据并且写到HTTP输出流中  
                    resp.Write(ds.GetXml());
                }
            }
            //写缓冲区中的数据到HTTP头文件中  
            resp.End();
        }
        static   public   void   ExportToExcel(System.Web.UI.Control   ctl)   //从DataGrid中导出
        {
            HttpContext.Current.Response.AppendHeader( "Content-Disposition ",   "attachment;filename=Excel.xls ");
            HttpContext.Current.Response.Charset   =   "UTF-8 ";
            HttpContext.Current.Response.ContentEncoding   =   System.Text.Encoding.Default;
            HttpContext.Current.Response.ContentType   =   "application/ms-excel ";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword  
            ctl.Page.EnableViewState   =   false;
            System.IO.StringWriter   tw   =   new   System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter   hw   =   new   System.Web.UI.HtmlTextWriter(tw);
            ctl.RenderControl(hw);
            HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
        }
       
       
    }
}

[解决办法]
应该加上异常处理

你的问题描述不太清除
[解决办法]
太长了
[解决办法]
你跟踪一下看看阿。。。这样没办法判断的

热点排行