2013-07-06 62 views
0

我已经将字符串数组绑定到Datagrid,然后我需要通过自动将文件保存在客户机中将数据导出到excel文件。 以下是我使用的代码。导出Datagrid数据到Excel C#

string fileName = "attachment;filename= DetailReport.xlsx"; 
     Response.Clear(); 
     Response.AddHeader("content-disposition", fileName); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/vnd.ms-excel"; 
     System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
     grdExcel.RenderControl(htmlWrite); 
     Response.Output.Write(stringWrite.ToString()); 
     Response.Flush(); 
     Response.End(); 

我成功导出文件并保存在客户机,但文件中的内容包括所有的HTML标签,可我知道自己做错了什么,以我的代码?请帮忙!!

+0

尝试导出csv格式,而不是xlsx格式.. http://stackoverflow.com/questions/13563343/simple-way-to-export-datagridview-to-excel –

+0

tip - http://social.msdn。 microsoft.com/Forums/vstudio/en-US/08d69589-4052-410f-a85c-c38493c0a664/creatingwriting-to-an-excel-file-with-c –

回答

0

您需要将文件写成二进制文件,要么使用TransmitFile要么使用BinaryWrite方法,只是使用HtmlTextWriter不会有帮助。

请参阅here

0

这可能有帮助!

 Response.Buffer = true; 
     Response.ContentType = "application/text"; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=file1.xls"); 
     Response.TransmitFile(fileName); 
     Response.Flush(); 
     Response.End(); 
+0

我还需要字符串编写器和html文本编写器吗? – user2015043

+0

我尝试使用Response.TransmitFile(fileName);它给我一个错误,“无法找到路径的一部分....”,因为该文件保存在客户机中,我如何传输文件?请帮助,谢谢 – user2015043

+0

而不是在客户端机器上创建文件,您可以在服务器上创建它。使用服务器的路径。请确保为服务器上的文件夹(您将用于保存文件的文件夹)授予权限。客户端下载文件,您可以编写代码来删除文件。因此,使用后那些垃圾文件将不会存在。 – Priya

0

使用Response.Write而不是Response.Output.Write。

+0

我已经尝试过但仍然一样,有什么想法? – user2015043