求导出至excel文件的各种方法方式
代码写的方法,就把方法源码发下。
插件的,就麻烦告诉下插件名啥的。。
急用。。
急急急急急急急急

解决方案 »

  1.   

    <%@ Page Language="C#" %><script runat="server">  protected void Page_Load(object sender, EventArgs e)
      {
        // 下面采用的是DataTable,也可以采用DataSet,其中每个DataTable可以保存成一个 Sheet
        // 迅雷下载时可以在下载完毕后会自动把文件名更新成 xls 或者 xml 的。
        System.Data.DataTable dt = new System.Data.DataTable();
        if (!Page.IsPostBack)
        {
          System.Data.DataRow dr;
          dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
          dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
          dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
          dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
          dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
          dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
          System.Random rd = new System.Random();
          for (int i = 0; i < 88; i++)
          {
            dr = dt.NewRow();
            dr[0] = "班级" + i.ToString();
            dr[1] = "【孟子E章】" + i.ToString();
            dr[2] = System.Math.Round(rd.NextDouble() * 100, 0);
            dr[3] = System.Math.Round(rd.NextDouble() * 100, 0);
            dr[4] = System.Math.Round(rd.NextDouble() * 100, 0);
            dr[5] = System.Math.Round(rd.NextDouble() * 100, 0);
            dt.Rows.Add(dr);
          }
        }    //假如每10条数据放在一个 Sheet 里面,先计算需要多少个 Sheet
        int ItenCountPerSheet = 10;
        int SheetCount = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / ItenCountPerSheet));
        Response.ClearContent();
        Response.BufferOutput = true;
        Response.Charset = "utf-8";
        Response.ContentType = "application/ms-excel";
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        //Response.AppendHeader("Content-Disposition", "attachment;filename="+Server.UrlEncode("孟宪会Excel表格测试")+".xls");
        // 采用下面的格式,将兼容 Excel 2003,Excel 2007, Excel 2010。    String FileName = "孟宪会Excel表格测试";
        if (!String.IsNullOrEmpty(Request.UserAgent))
        {
          // firefox 里面文件名无需编码。
          if (!(Request.UserAgent.IndexOf("Firefox") > -1 && Request.UserAgent.IndexOf("Gecko") > -1))
          {
            FileName = Server.UrlEncode(FileName);
          }
        }
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".xml");
        Response.Write("<?xml version='1.0'?><?mso-application progid='Excel.Sheet'?>");
        Response.Write(@"<Workbook xmlns='urn:schemas-microsoft-com:office:spreadsheet'
          xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel'
          xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet' xmlns:html='http://www.w3.org/TR/REC-html40'>");
        Response.Write(@"<DocumentProperties xmlns='urn:schemas-microsoft-com:office:office'>");
        Response.Write(@"<Author>孟宪会</Author><LastAuthor>孟子E章</LastAuthor>
              <Created>2010-09-08T14:07:11Z</Created><Company>mxh</Company><Version>1990</Version>");
        Response.Write("</DocumentProperties>");
        Response.Write(@"<Styles><Style ss:ID='Default' ss:Name='Normal'><Alignment ss:Vertical='Center'/>
          <Borders/><Font ss:FontName='宋体' x:CharSet='134' ss:Size='12'/><Interior/><NumberFormat/><Protection/></Style>");
        //定义标题样式    
        Response.Write(@"<Style ss:ID='Header'><Borders><Border ss:Position='Bottom' ss:LineStyle='Continuous' ss:Weight='1'/>
           <Border ss:Position='Left' ss:LineStyle='Continuous' ss:Weight='1'/>
           <Border ss:Position='Right' ss:LineStyle='Continuous' ss:Weight='1'/>
           <Border ss:Position='Top' ss:LineStyle='Continuous' ss:Weight='1'/></Borders>
           <Font ss:FontName='宋体' x:CharSet='134' ss:Size='18' ss:Color='#FF0000' ss:Bold='1'/></Style>");    //定义边框
        Response.Write(@"<Style ss:ID='border'><NumberFormat ss:Format='@'/><Borders>
          <Border ss:Position='Bottom' ss:LineStyle='Continuous' ss:Weight='1'/>
          <Border ss:Position='Left' ss:LineStyle='Continuous' ss:Weight='1'/>
          <Border ss:Position='Right' ss:LineStyle='Continuous' ss:Weight='1'/>
          <Border ss:Position='Top' ss:LineStyle='Continuous' ss:Weight='1'/></Borders></Style>");    Response.Write("</Styles>");    //SheetCount代表生成的 Sheet 数目。
        for (int i = 0; i < SheetCount; i++)
        {
          //计算该 Sheet 中的数据起始行和结束行。
          int start = ItenCountPerSheet * i;
          int end = ItenCountPerSheet * (i + 1);
          if (end > dt.Rows.Count) end = dt.Rows.Count;      Response.Write("<Worksheet ss:Name='Sheet" + (i + 1) + "'>");
          Response.Write("<Table x:FullColumns='1' x:FullRows='1'>");      //输出标题
          Response.Write("\r\n<Row ss:AutoFitHeight='1'>");
          for (int j = 0; j < dt.Columns.Count; j++)
          {
            Response.Write("<Cell ss:StyleID='Header'><Data ss:Type='String'>" + dt.Columns[j].ColumnName + "</Data></Cell>");
          }
          Response.Write("\r\n</Row>");
                for (int j = start; j < end; j++)
          {
            Response.Write("<Row>");
            for (int c = 0; c < 6; c++)
            {
              //对于数字,采用Number数字类型
              if (c > 1)
              {
                Response.Write("<Cell ss:StyleID='border'><Data ss:Type='Number'>" + dt.Rows[j][c].ToString() + "</Data></Cell>");
              }
              else
              {
                Response.Write("<Cell ss:StyleID='border'><Data ss:Type='String'>" + dt.Rows[j][c].ToString() + "</Data></Cell>");
              }
            }
            Response.Write("</Row>");
          }
          Response.Write("</Table>");
          Response.Write("</Worksheet>");
          Response.Flush();
        }
        Response.Write("</Workbook>");
        Response.End();
      }
    </script>
      

  2.   

      C# 代码
      
      <%@ Page Language="C#" EnableEventValidation="false" %>
      
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
      <script. runat="server">
       违规广告ection CreateDataSource( )
       {
       System.Data.DataTable dt = new System.Data.DataTable();
       System.Data.DataRow dr;
       dt.Columns.Add(new System.Data.DataColumn("id", typeof(Int32)));
       dt.Columns.Add(new System.Data.DataColumn("PkID", typeof(string)));
       dt.Columns.Add(new System.Data.DataColumn("Title", typeof(string)));
       for (int i = 0; i < 6; i++)
       {
       dr = dt.NewRow();
       dr[0] = i;
       dr[1] = "123456789123456789123456789";
       dr[2] = "<a href='http://dotnet.aspx.cc/'>欢迎光临【孟宪会之精彩世界】</a>";
       dt.Rows.Add(dr);
       }
       System.Data.DataView dv = new System.Data.DataView(dt);
       return dv;
       }
      
       protected void Page_Load( object sender, EventArgs e )
       {
       if (!IsPostBack)
       {
       GridView1.BorderWidth = Unit.Pixel(2);
       GridView1.BorderColor = System.Drawing.Color.DarkOrange;
       GridView1.DataSource = CreateDataSource();
       GridView1.DataBind();
       }
       }
      
       protected void Button1_Click( object sender, System.EventArgs e )
       {
       Response.Clear();
       Response.Buffer = true;
       Response.Charset = "GB2312";
       Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
       // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
       Response.ContentEncoding = System.Text.Encoding.UTF7;
       Response.ContentType = "application/ms-Excel";//设置输出文件类型为Excel文件。
       System.IO.StringWriter StringWriter = new System.IO.StringWriter();
       System.Web.UI.HTMLTextWriter HTMLTextWriter = new System.Web.UI.HTMLTextWriter(oStringWriter);
       this.GridView1.RenderControl(oHTMLTextWriter);
       Response.Output.Write(oStringWriter.ToString());
       Response.Flush();
       Response.End();
      
       }
       public override void VerifyRenderingInServerForm( Control control )
       { }
       protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )
       {
       if (e.Row.RowType == DataControlRowType.DataRow)
       {
       e.Row.Cells[1].Attributes.Add("style", "vnd.ms-Excel.numberformat:@;");
       }
       }
      </script>
      
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
       <title>将 GridView 导出到 Excel 文件中</title>
      </head>
      <body>
       <form. id="form1" runat="server">
       <ASP:GridView ID="GridView1" runat="server" nRowDataBound="GridView1_RowDataBound"
       AutoGenerateColumns="false">
       <Columns>
       <asp:BoundField HeaderText="序号" DataField="id" />
       <asp:BoundField HeaderText="身份证号" DataField="PkID" />
       <asp:BoundField HeaderText="网址" DataField="Title" ReadOnly="true" HtmlEncode="false" />
       </Columns>
       </asp:GridView>
       <asp:Literal ID="HiddenOut" runat="server" />
       <asp:Button ID="Button1" runat="server" Text="导出" nClick="Button1_Click" />
       </form>
      </body>
      </html>
      

  3.   

    导出一段html存为excel就好了
    如果想要高级点就用npoi.dll
    如果你想用excel.dll......布署的时候烦死你....
      

  4.   

    //string strCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";             string strCon = " Provider = Microsoft.ACE.OLEDB.12.0; Data Source ="+ fileName +";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";Persist Security Info=False";
                //string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName +";Extended Properties=Excel 8.0;Persist Security Info=False";
                OleDbConnection myConn = new OleDbConnection(strCon);
                int start = fileName.LastIndexOf("\\");
                int end = fileName.LastIndexOf('.');
                myConn.Open();            System.Data.DataTable schemaTable = myConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null,null, "TABLE" });            string tableName = schemaTable.Rows[0][2].ToString().Trim();            string strCom = "SELECT * FROM ["+ tableName +"]";            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
                DataSet myDataSet = new DataSet();
                myCommand.Fill(myDataSet, "TABLE");
                
                myConn.Close();
                return myDataSet;