蓝色1+1
别人对我们的重要, 但我们不能失去自我 更多的时候 我们要用自己的双手去拭去旅途的灰尘 用自己的问候趋散跋涉的疲顿, 用自己的心情去珍惜每一个日子, 每一个感动

private void Export(System.Web.UI.WebControls.DataGrid dg,string fileName,string typeName)
{
    System.Web.HttpResponse httpResponse = Page.Response;
    httpResponse.AppendHeader("Content-Disposition","attachment;filename="+
        HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)); 
    httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
    httpResponse.ContentType = typeName;
    System.IO.StringWriter  tw = new System.IO.StringWriter() ;
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
    dg.RenderControl(hw);
    string filePath = Server.MapPath("..")+fileName;
    System.IO.StreamWriter sw = System.IO.File.CreateText(filePath);
    sw.Write(tw.ToString());
    sw.Close();

    DownFile(httpResponse,fileName,filePath);
    httpResponse.End();
}

private  bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath)
{
     try
    {
        Response.ContentType = "application/octet-stream";

        Response.AppendHeader("Content-Disposition","attachment;filename=" + 
        HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");
        System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);
        long fLen=fs.Length;
        int size=102400;//每100K同时下载数据 
        byte[] readData = new byte[size];//指定缓冲区的大小 
        if(size>fLen)size=Convert.ToInt32(fLen);
        long fPos=0;
        bool isEnd=false;
        while (!isEnd) 
        { 
            if((fPos+size)>fLen)
            {
                size=Convert.ToInt32(fLen-fPos);
                readData = new byte[size];
                isEnd=true;
            }
            fs.Read(readData, 0, size);//读入一个压缩块 
            Response.BinaryWrite(readData);
            fPos+=size;
        } 
        fs.Close(); 
        System.IO.File.Delete(fullPath);
        return true;
    }
    catch
    {
        return false;
    }
}

怎么调用?? 其实就是怎么调用Export这个函数罢了.

以上方法可以很有效地解决导出的乱码问题   

posted on 2007-08-28 09:53  BlueShell  阅读(407)  评论(0编辑  收藏  举报