Response.ContentType = "application/vnd.ms-excel";
 Response.Charset = "";
 EnableViewState = false;
 System.IO.StringWriter tw = new System.IO.StringWriter();//
 System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
 MyDG1.RenderControl(hw);//DATAGRIDHtmlTextWriter
 Response.Write(tw.ToString());
 Response.End();1、有没有vb版本的,,这个是c#,,比较笨,不会修改
2、从数据库查询结果,,绑定到控件会了,,数据库比较多,我想,
   只显示前10结果,然后一个导出按钮
有没有一个完整的代码,,在此先谢过

解决方案 »

  1.   

    给你一个很好的函数
            Public Function DataGridToExcel(ByRef Page As System.Web.UI.Page, ByVal MyDataGrid As System.Web.UI.WebControls.DataGrid, ByVal FileName As String) As String            Dim resp As HttpResponse
                resp = Page.Response
                resp.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7")
                resp.ContentType = "application/vnd.ms-excel"
                resp.AddHeader("Content-Disposition", "attachment; filename=" + FileName)
                resp.Charset = "gb2312"            Dim tw As New System.IO.StringWriter
                Dim hw As New System.Web.UI.HtmlTextWriter(tw)            ' Get the HTML for the control.
                MyDataGrid.RenderControl(hw)
                ' Write the HTML back to the browser.
                resp.Write(tw.ToString())
                ' End the response.
                resp.End()        End Function
    调用的方法:DataGridToExcel(Page, DataGrid1, filename)
    简单而好用。
      

  2.   

    不过。
    Dim tw As New System.IO.StringWriter
    没有可访问的“New”接受此数目的参数,因此重载决策失败。
      

  3.   

    <%@ Page Language="VB" AutoEventWireup="True" Debug="true"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <%@ Import Namespace="System.Drawing" %>
    <%@ Import Namespace="System.Drawing.Color" %><html>
       <script runat="server">
         dim MyConnection as OleDbConnection      Sub Page_Load(sender As Object, e As EventArgs) 
          MyConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/data.mdb")         If Not IsPostBack Then 
                BindGrid()
             End If
          End Sub      Sub MyDataGrid_Page(sender as Object, e As DataGridPageChangedEventArgs) 
              MyDataGrid.CurrentPageIndex = e.NewPageIndex
              BindGrid()
          End Sub      Sub BindGrid() 
          Dim MyCommand As OleDbDataAdapter = new OleDbDataAdapter("select * from [min]", MyConnection)
              Dim DS As DataSet = new DataSet()
              MyCommand.Fill(DS,"min") 
              MyDataGrid.DataSource = DS.Tables("min").DefaultView
              MyDataGrid.DataBind()
          End SubSub Button1_Click(sender As Object, e As System.EventArgs)
    '-------------------
    MyDataGrid.AllowPaging = "false"
    BindGrid()
    '-------------------
          MyDataGrid.SelectedItemStyle.BackColor=Color.white
          MyDataGrid.AlternatingItemStyle.BackColor=Color.white
          MyDataGrid.ItemStyle.BackColor=Color.white
      MyDataGrid.HeaderStyle.BackColor=Color.white
      MyDataGrid.HeaderStyle.ForeColor=Color.redHttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Filel.xls")
      '----------
              dim resp as HttpResponse = Page.Response
              resp.ContentEncoding = System.Text.Encoding.GetEncoding("Big5")
              Response.ContentType = "application/vnd.ms-excel"
              Response.Charset = ""
              Me.EnableViewState = False
              Dim tw As New System.IO.StringWriter()
              Dim hw As New System.Web.UI.HtmlTextWriter(tw)
              MyDataGrid.RenderControl(hw)
              Response.Write(tw.ToString())
              Response.End()
        '-------------------
        MyDataGrid.AllowPaging = "true"
    BindGrid()
    End Sub
    </script><form runat="server">
    <asp:Button id="button1" onclick="Button1_Click" text="Write To Excle File" runat="server"/>    <asp:DataGrid id="MyDataGrid" 
               AllowPaging="True" 
               PageSize="5" 
               OnPageIndexChanged="MyDataGrid_Page" 
               runat="server"
       AutoGenerateColumns="False"
       Width="200">
             <HeaderStyle BackColor="Navy" 
                          ForeColor="White" 
                          Font-Bold="True" 
      HorizontalAlign="Center"/>
             <PagerStyle Mode="NextPrev"
                         HorizontalAlign="Right" 
     NextPageText="下一页"
                         PrevPageText="上一页"/>
          <Columns>
             <asp:BoundColumn DataField="id" HeaderText="ID"/>
     <asp:TemplateColumn HeaderText="zhuti">
    <ItemTemplate>
            <asp:Label ID="lblTotalPrice"  Text='<%#(Container.DataItem("zhuti"))%>' Runat=server />
    </ItemTemplate> 
    </asp:TemplateColumn> 
          </Columns>
          </asp:DataGrid>
    </form>