2013-07-06 11 views
0

Я привязываю массив Array к 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(); 

экспорт I успех файл и сохранить в клиентской машине, но содержание в файле включают все 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

Смежные вопросы