小弟做了一个导出excel的功能,导出的是伪excel,具体代码如下:
protected void btnExcle_Click(object sender, EventArgs e)
{ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="aaa.xls.xls" + "");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
HttpContext.Current.Response.ContentType = "application/ms-excel/ms-word";
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
goExcel.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
注意:需导出的页面中存在跨行的情况,导出后,前面一千多行是正常的,但是一千多行后面的数据,格式就乱了,该跨行的列没有跨行了。请问大侠们,如何解决呢?小弟不想用导出ds的方法,就想直接导出页面。
protected void btnExcle_Click(object sender, EventArgs e)
{ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="aaa.xls.xls" + "");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
HttpContext.Current.Response.ContentType = "application/ms-excel/ms-word";
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
goExcel.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
注意:需导出的页面中存在跨行的情况,导出后,前面一千多行是正常的,但是一千多行后面的数据,格式就乱了,该跨行的列没有跨行了。请问大侠们,如何解决呢?小弟不想用导出ds的方法,就想直接导出页面。
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(sheetName) + ".xls");
HttpContext.Current.Response.BinaryWrite(File.ReadAllBytes(excelPath)); if (dt.Rows.Count > 10000)
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">EndRequest2();</script>"); //删除创建的临时文件
File.Delete(excelPath);
private void Export(GridView _gv, string FileName)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());//FileName.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/vnd.xls";//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
_gv.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End(); }
public override void VerifyRenderingInServerForm(Control control)
{
}------------------------public void ToExcel()//整个GRIDVIEW导出到EXCEL
{
string filename="网银终端" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
string style = @"<style> .text { mso-number-format:/@; } </script> "; //解决第一位字符为零时不显示的问题
this.GridView1.AllowPaging = false;
this.GridView1.DataBind(); filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);//解决导出EXCEL时乱码的问题
Response.ClearContent;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename); System.IO.StringWriter sw = new System.IO.StringWriter();//定义一个字符串写入对象
HtmlTextWriter htw = new HtmlTextWriter(sw);//将html写到服务器控件输出流
this.GridView1.RenderControl(htw);//将控件GRIDVIEW中的内容输出到HTW中
Response.Write(style);
Response.Write(sw);
Response.End(); this.GridView1.AllowPaging = true;
}
http://jasondct.blog.163.com/blog/static/81820673201111481221348/
http://blog.csdn.net/liaodajian/article/details/3501699