asp.net导出复杂excel后,页面格式错乱

tautaulee 2012-03-19 09:17:22
小弟做了一个导出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的方法,就想直接导出页面。
...全文
208 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tautaulee 2012-03-19
  • 打赏
  • 举报
回复
虽然大家没能帮我解决到,但是还是谢谢大家,分就让各位分了吧
tautaulee 2012-03-19
  • 打赏
  • 举报
回复
自己解决了,唉。原来是样式的影响,前台有br
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chen_ya_ping 的回复:]

NPOI这个试试,效果肯定不错
[/Quote]
我也推荐一下
http://blog.csdn.net/liaodajian/article/details/3501699
xiaoyu821120 2012-03-19
  • 打赏
  • 举报
回复
自己可以做一些测试,excel虽然支持html格式,但是和ie比还是有很多不同,特别对div支持不好,还有css,js的问题,具体问题要具体分析。
铜臂阿铁木 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chen_ya_ping 的回复:]

NPOI这个试试,效果肯定不错
[/Quote]
是的 推荐这个NPOI,不过现在维护的还是有一些bug,不过应该不会遇到bug吧。
chen_ya_ping 2012-03-19
  • 打赏
  • 举报
回复
NPOI这个试试,效果肯定不错
段传涛 2012-03-19
  • 打赏
  • 举报
回复
仅仅做参考吧
http://jasondct.blog.163.com/blog/static/81820673201111481221348/
段传涛 2012-03-19
  • 打赏
  • 举报
回复
先参考这个, 我找下我上次解决方法的代码
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;
}
ccshigenvwa 2012-03-19
  • 打赏
  • 举报
回复
你这是吧页面上的table组成的html导出成excel 么,如果这样的话是不是页面的html转换到流文件时候html标签出了问题呢?
  • 打赏
  • 举报
回复
 //输出导出结果到客户端
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);

tautaulee 2012-03-19
  • 打赏
  • 举报
回复
解决小弟此问题者,私下再送1000分
tautaulee 2012-03-19
  • 打赏
  • 举报
回复
高手帮帮忙,分已经加到最大了。
tautaulee 2012-03-19
  • 打赏
  • 举报
回复
高手们帮帮忙,这个东西困扰小弟多时。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧