DataGrid生成EXCEL为.xls格式,客户端用word07打开时会出现两个问题:    1、打开出现“您尝试找开的文件的格式与文件扩展名指定的格式不一致”。打开后正确显示,无缺少数据情况。
    2、打开出现乱码,出错原因:单元格数据太大
      
if(ds != null)
{

DataGrid1.DataSource = ds.Tables[0].DefaultView;
DataGrid1.DataBind();

string strTitle = "文件" + this.txtStatMonth.Text.Trim() + "内容";
Response.Clear();
Response.Buffer = true;
Response.Charset = "UTF-7";

Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(strTitle+".xls"));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-7");
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);

DataGrid1.RenderControl(hw);

Response.Write(sw.ToString());
Response.End();
}
else
{
Response.Write("<script language='javascript'>alert('没有要导出的数据!');</script>");
return;
}        备注:如何解决这种兼容性问题。当生成CSV格式时,同样会有这种问题。有时只有列名内容空白。求助。。麻烦各位,谢谢

解决方案 »

  1.   

         网上查查很多的。下面方法也会出现提示1,但没有提示2,可以用。       
    Response.Clear();
                Response.Buffer = true;
                Response.Charset = "GB2312";
                Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
                Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.ContentType = "application/vnd.xls";//设置输出文件类型为excel文件。
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
                DataGrid1.RenderControl(oHtmlTextWriter);
                Response.Output.Write(oStringWriter.ToString());
                Response.Flush();
                Response.End();
      

  2.   

    可以用 导出 xml格式来实现.
    http://www.cnblogs.com/surfsky/archive/2008/07/31/1257352.html
      

  3.   

    下载一个 nopi  for .net的插件   http://npoi.codeplex.com/   项目中添加引用   怎么使用 看例子  很简单的可以生成标准的execl格式