girdview在服务器上生成excel不知道怎么第一行怎么出现一个?号 求高手怎样能去掉那个?号
<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="GridViewToExcelFile.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="gvFoods" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" EnableViewState="true">
            <FooterStyle BackColor="Tan" />
            <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
            <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
            <HeaderStyle BackColor="Tan" Font-Bold="True" />
            <AlternatingRowStyle BackColor="PaleGoldenrod" />
        </asp:GridView>
        <br />
        <asp:Button ID="Button1" runat="server" BackColor="#C0C0FF" OnClick="Button1_Click"
            Text="Create Excel" Width="137px" />
    </div>
    </form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Collections;public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
       if(!Page.IsPostBack)
       {
          CreateStructure();
          this.gvFoods.DataSource = this.CreateData();
          this.gvFoods.DataBind();
       }
    }
   private DataTable CreateStructure()
   {
      DataTable dt = new DataTable();
      dt.Columns.Add(new DataColumn("CategoryID", typeof(int)));
      dt.Columns.Add(new DataColumn("CategoryName", typeof(string)));
      dt.Columns.Add(new DataColumn("Price", typeof(int)));      
      return dt;
   }
   public DataSet CreateData()
   {
      DataSet ds = new DataSet();
      DataTable dt = this.CreateStructure();      DataRow drNew = dt.NewRow();      
      drNew = dt.NewRow();
      drNew["CategoryID"] = 1;
      drNew["CategoryName"] = "Apple";
      drNew["Price"] = 2;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 2;
      drNew["CategoryName"] = "Banana";
      drNew["Price"] = 3;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 3;
      drNew["CategoryName"] = "Orange";
      drNew["Price"] = 1;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 4;
      drNew["CategoryName"] = "Radish";
      drNew["Price"] = 2;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 5;
      drNew["CategoryName"] = "Pen";
      drNew["Price"] = 3;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 6;
      drNew["CategoryName"] = "Pencil";
      drNew["Price"] = 7;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 7;
      drNew["CategoryName"] = "Ruler";
      drNew["Price"] = 3;
      dt.Rows.Add(drNew);      drNew = dt.NewRow();
      drNew["CategoryID"] = 8;
      drNew["CategoryName"] = "Eraser";
      drNew["Price"] = 5;
      dt.Rows.Add(drNew);      ds.Tables.Add( dt );
      return ds;
   }
   protected void Button1_Click(object sender, EventArgs e)
   {     
      StringWriter sw = new StringWriter();
      HtmlTextWriter htw = new HtmlTextWriter(sw);
      this.gvFoods.RenderControl(htw);
      string strHtml = sw.ToString().Trim();      string ExcelFileName = "FoodList.xls";
      string FilePhysicialPathName = Request.PhysicalApplicationPath;      
      
      //生成的Excel文件名
      string objectExcelFileName = Path.Combine(FilePhysicialPathName, ExcelFileName);      if( File.Exists( objectExcelFileName ))
      {
         File.Delete(objectExcelFileName);
      }
      FileStream fs = new FileStream(objectExcelFileName, FileMode.Create);
      BinaryWriter bw = new BinaryWriter(fs, Encoding.GetEncoding("GB18030"));
      bw.Write(strHtml);
      bw.Close();
      fs.Close();   }
   public override void VerifyRenderingInServerForm(Control control)
   {
      //base.VerifyRenderingInServerForm(control);
   }  
}

解决方案 »

  1.   

    gridview里的第一行是不是列名啊?数据类型不对吧?!在gridview的行绑定函数(好像是rowbinding()吧?)里作下处理吧?!
      

  2.   

    类型“GridView”的控件“gvFoods”必须放在具有 runat=server 的窗体标记内。
    ===============
    在我这出现这个错误。
    调试一下,在this.gvFoods.RenderControl(htw); 出现错误。
      

  3.   

    给你个孟子的例子:
    http://blog.csdn.net/net_lover/archive/2006/09/13/1217998.aspx
      

  4.   

    //也可以通过自己遍历DataSet,来创建一个Html table的方式,StringBuilder sb = new StringBuilder();
    sb.Append(@"<TABLE>");
    //添加表头
    foreach (System.Data.DataRow row in DataSet.Tables[0].Rows)
    {
        sb.Append(@"<TR>");
        foreach (System.Data.DataColumn column in DataSet.Tables[0].Columns)
        {
            sb.Append(@"<TD");
            sb.Append(row[column.ColumnName]);
            sb.Append(@"</TD");
        }
        sb.Append(@"</TR>");
    }
    sb.Append(@"<TABLE>");Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", "test"));
    Response.ContentType = "application/ms-excel";
    Response.ContentEncoding = System.Text.Encoding.UTF7;
    Response.Write(sb.ToString());
    Response.Flush();
    Response.End();