1 System.IO.StringWriter SW = new System.IO.StringWriter(); 2 System.Web.UI.HtmlTextWriter HTW = new System.Web.UI.HtmlTextWriter(SW); 3 Page.EnableViewState = false; 4 Page.Form.RenderControl(HTW); 5 //Page为要导出的对象,当前是Page,如果是DataGrid,DataList等都可以 6 string pageHtml = SW.ToString(); 7 int startIndex = pageHtml.IndexOf("<div id=\'PrintA\'>") + 17; 8 int endIndex = pageHtml.LastIndexOf("</div>"); 9 int lenth = endIndex - startIndex; 10 pageHtml = pageHtml.Substring(startIndex, lenth); 11 pageHtml = pageHtml.Remove(pageHtml.LastIndexOf("</div>")); 12 //移除页面自动添加的hidden input等 13 Uri MyUrl = Request.UrlReferrer; 14 pageHtml = pageHtml.Replace("../images/title.jpg", "http://" + MyUrl.Authority + "/" + MyUrl.AbsolutePath.Split(\'/\').GetValue(1) + "/images/title.jpg").Replace("textarea", "span").Replace("href=","name="); 15 //解决图片无法显示问题 16 Response.Buffer = true; 17 Response.Clear(); 18 Response.ClearContent(); 19 Response.ClearHeaders(); 20 //Response.ContentType = "Response.ContentType"; 21 if (RadioButtonList1.SelectedIndex == 0) 22 { 23 //防止出现乱码,加上这行可以防止在只有一行数据时出现乱码 24 HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"); 25 //Word 26 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(lbTitle.Text + ".doc", System.Text.Encoding.UTF8)); 27 28 Response.ContentType = "application/ms-word"; 29 //Response.ContentType是输出流的 HTTP MIME 类型 30 //Response.ContentType --- word文件 31 //application/vnd.ms-excel --- excel文件 32 //... 33 // Response.Charset = "utf-8"; 34 // Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); 35 //Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(lbTitle.Text, System.Text.Encoding.UTF8) + ".doc"); 36 } 37 else 38 { 39 //防止出现乱码,加上这行可以防止在只有一行数据时出现乱码 40 HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"); 41 //Excel 42 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(lbTitle.Text + ".xls", System.Text.Encoding.UTF8)); 43 HttpContext.Current.Response.ContentType = "application/ms-excel"; 44 45 46 //Response.ContentType = "application/ms-excel"; 47 ////Response.ContentType是输出流的 HTTP MIME 类型 48 ////Response.ContentType --- word文件 49 ////application/vnd.ms-excel --- excel文件 50 ////... 51 //Response.Charset = "UTF-8"; 52 //Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); 53 //Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(lbTitle.Text, System.Text.Encoding.UTF8) + ".xls"); 54 } 55 56 //attachment --- 作为附件下载 57 //inline --- 在线打开 58 //filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) 59 //进行进行编码,以解决文件名乱码的问题 60 Response.Write(pageHtml.ToString()); 61 // Response.Write("<html xmlns:v=\'urn:schemas-microsoft-com:vml\' xmlns:o=\'urn:schemas-microsoft-com:office:office\' xmlns:w=\'urn:schemas-microsoft-com:office:word\' xmlns:m=\'http://schemas.microsoft.com/office/2004/12/omml\' xmlns=\'http://www.w3.org/TR/REC-html40\'><body>" + pageHtml.ToString()); 62 63 Response.Flush(); 64 Response.Close(); 65