做毕业设计时探索的这种方法还比较好用,缺点是本方法是先用DATAGRID从数据库取数据,再从页面导出到EXCEL。可以参考改进。(用Vb编写,这里的代码是脚本部分)
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class export
Inherits System.Web.UI.Page
#Region " Web 窗体设计器生成的代码 "
'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
OpenDataBase_And_BindToDataGrid()
End If
End Sub
Sub ChangePage(ByVal sender As System.Object, ByVal e As DataGridPageChangedEventArgs)
DataGrid1.CurrentPageIndex = e.NewPageIndex
OpenDataBase_And_BindToDataGrid()
End Sub
Sub OpenDataBase_And_BindToDataGrid()
Dim sql As String = "select ID,Rsno,Rsname,Rsmajor,Rclass,Rsgrade,Rcourse,colledge,Rcourseindex from getReportInfo "
'定义SQL语句
Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Inetpub\wwwroot\WebApplication1\reportsys1.mdb'") '连接数据库
Dim Adpt As OleDbDataAdapter
Dim Ds As DataSet '定义一个DataSet
Conn.Open()
Adpt = New OleDbDataAdapter(sql, Conn)
Ds = New DataSet
Adpt.Fill(Ds, "getReportInfo")
Dim table1 As DataTable = Ds.Tables("getReportInfo")
DataGrid1.DataSource = table1.DefaultView
DataGrid1.DataBind() '和数据库绑定
Conn.Close()
Conn = Nothing
End Sub
Private Sub ExportExcelFromDataGrid(ByVal filename As String, ByVal ToExcelGrid As System.Web.UI.WebControls.DataGrid)
Response.Clear()
Response.Buffer = True
Response.Charset = "utf-8"
Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(filename))
Response.ContentEncoding = System.Text.Encoding.Default '设置输出流为简体中文
Response.ContentType = "application/ms-excel" '设置输出文件类型为excel文件。
EnableViewState = False '处理过程设置为不可见,后台处理
Dim myCItrad As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ZH-CN", True)
Dim oStringWriter As System.IO.StringWriter = New System.IO.StringWriter(myCItrad)
Dim oHtmlTextWriter As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter)
ToExcelGrid.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.End()
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Panel1.Visible = false;
Dim filename As String = TextBox1.Text & ".xls"
DataGrid1.Columns(7).Visible = True
DataGrid1.Columns(8).Visible = True