2013-12-12 7 views
0

сгенерировать документ Excel в ASP.Net с кодом ниже:Экспорт Datatable Для Excel Формат/Extension Error

if (dataTable.Rows.Count > 0) 
{ 
    var tw = new StringWriter(); 
    var hw = new System.Web.UI.HtmlTextWriter(tw); 
    var dgGrid = new DataGrid(); 
    dgGrid.DataSource = dataTable; 
    dgGrid.DataBind(); 
    dgGrid.RenderControl(hw); 

    attachment = "attachment; filename=" + fileName + ".xls"; 

    Response.Charset = "UTF-8"; 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.AppendHeader("content-disposition", attachment); 
    outputResponse = tw.ToString(); 
} 

Но когда я хочу открыть документ Excel дает ошибку:

Error: excel cannot open the file .xls because the file format or file extension is not valid

Как могу я решить его?

+0

Вы пробовали это без 'Response.Charset =" UTF-8 ";'? – Koen

+0

Да, в первый раз я пробовал это без Charset, и я получаю ошибку после того, как я пробовал с Charset, и снова я получаю ошибку. – UserStackk

ответ

0

Либо используйте ссылку на объект приложения Excel для создания фактического файла excel, используйте один из многих проектов на основе codeplex для создания электронной таблицы Excel или наиболее легко создать CSV-файл из вашего datagrid и вернуть его, что многие пользователи компьютеры попросят их открыть в Excel.

0

Просто попробовал ваш код, за исключением последней строки, которую я изменил:

var tw = new StringWriter(); 
    var hw = new System.Web.UI.HtmlTextWriter(tw); 
    var dgGrid = new DataGrid(); 
    dgGrid.DataSource = dataTable; 
    dgGrid.DataBind(); 
    dgGrid.RenderControl(hw); 

    var attachment = "attachment; filename=" + fileName + ".xls"; 

    Response.Charset = "UTF-8"; 
    Response.ContentType = "application/vnd.ms-excel"; 
    Response.AppendHeader("content-disposition", attachment); 
    // outputResponse = tw.ToString(); 
    Response.Output.Write(tw.ToString()); 
    Response.Flush(); 
    Response.End(); 

Мой DataTable является 2-цв таблицы с простыми данными (букв и цифр), и он открыт должно.

Вы получите сообщение, которое говорит:

The file you are trying to open'yourfilename.xls', is in a different format thahn specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

После нажатия кнопки ОК файл открывается только штрафом.

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