导出数据到Excel格式/扩展错误

时间:2013-12-12 08:26:28

标签: c# asp.net c#-4.0

我在ASP.Net中使用以下代码生成Excel文档:

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文档时,它会出错:

  

错误:excel无法打开.xls文件,因为文件格式或   文件扩展名无效

我该如何解决?

2 个答案:

答案 0 :(得分:0)

使用对Excel Application对象的引用来创建实际的excel文件,使用众多基于codeplex的项目中的一个来创建Excel电子表格,或者最容易从数据网格创建一个CSV文件并返回该文件,这是许多用户计算机将提示他们在Excel中打开。

答案 1 :(得分: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();

我的数据表是一个包含简单数据(字母和数字)的2-col表,并且它应该打开。

您将收到以下消息:

  

您尝试打开'yourfilename.xls'的文件与众不同   格式thahn由文件扩展名指定。验证文件是否正确   没有损坏,并且在打开文件之前来自受信任的来源。做   你想现在打开文件吗?

单击“确定”后,文件就会正常打开。