2012-06-18 53 views
0

我正在使用c#开发asp.net 4.0 web应用程序。我正尝试将Gridview数据导出到ms word文档。我已经使用了下面的代码。我怎样才能将gridview数据导出到ms字

Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=MyWord.doc"); 
     Response.ContentEncoding = System.Text.Encoding.UTF7; 
     Response.ContentType = "application/vnd.word"; 
     System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); 
     this.GridView1.RenderControl(oHtmlTextWriter); 
     Response.Output.Write(oStringWriter.ToString()); 
     Response.Flush(); 
     Response.End(); 

在应用程序运行没有问题,但它在Word返回的数据,如

+ADw-div+AD4- +ADw-table cellspacing+AD0AIg-0+ACI- cellpadding+AD0AIg-4+ACI- id+AD0AIg-GridView1+ACI- style+AD0AIg-color:+ACM-333333+ADs-border-collapse:collapse+ADsAIgA+- +ADw-tr style+AD0AIg-color:White+ADs-background-color:+ACM-507CD1+ADs-font-weight:bold+ADsAIgA+- +ADw-th scope+AD0AIg-col+ACIAPg-FileId+ADw-/th+AD4APA-th scope+AD0AIg-col+ACIAPg-PortalId+ADw-/th+AD4APA-th scope+AD0AIg-col+ACIAPg-FileName+ADw-/th+AD4APA-th scope+AD0AIg-col+ACIAPg-Extension+ADw-/th+AD4APA-th scope+AD0AIg-col+ACIAPg-Size+ADw-/th+AD4APA-th scope+AD0AIg-col+ACIAPg-Width+ADw- 

我知道这是很类似HTML,但我怎么能转化为实际的一个这个。引导我。

+0

我不知道你的HTML和您发布的片段之间看到的相似性,但我是你知道,'.doc' MS Word格式是专有二进制文件格式?哟有没有在记事本中打开过MS Word生成的'.doc'文件哟看看它有什么相似之处?你似乎正在写一些文本文件,显然与实际格式无关。 –

+0

这里我在文档中找到div,style,cellpadding,tableand td,th。我们如何将该二进制格式转换为实际的表结构 –

+0

您必须使用第三方库。 .NET没有内置的任何东西可以让你生成Word文件。 –

回答

0

这是我的作品它需要itextsharp.dll

  string FName = "filename.doc"; 
      mygrid.AllowPaging = false; 
      mygrid.DataSource = datasource(); 
      mygrid.DataBind(); 
      Response.ClearContent(); 
      Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", FName)); 
      Response.Charset = ""; 
      Response.ContentType = "application/ms-word"; 
      StringWriter sw = new StringWriter(); 
      HtmlTextWriter htw = new HtmlTextWriter(sw); 
      mygrid.RenderControl(htw); 
      Response.Write(sw.ToString()); 
      Response.End();