将DataGrid输出到Excel文件

在Web From上输出数据到Excel有两种方法,一个是有数据库直接导出;另外一个方法是由DataGrid直接输出到Excel文件。下面得代码实现了这两个功能。注意:在使用时要引用Microsoft Office  Web Components 9.0 COM组件,另外注意设置要保存文件得目录具有匿名可修改的权限。

DataGridToExcel.ASPx

<%@ Page Language="<a href="http://dev.21tx.com/language/vb/" target="_blank">VB</a>" EnableViewState="False" AutoEventWireup="false" Codebehind="DataGridToExcel.aspx.vb"  Inherits="aspxWeb.mengxianhui.com.DataGridToExcel"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML>   <HEAD>     <title id="mengxianhui" runat="server"></title>     <meta name="GENERATOR" content="Microsoft Visual Studio<a href="http://dev.21tx.com/dotnet/" target="_blank">.net</a> 7.0">     <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">     <meta name="vs_defaultClientScript" content="<a href="http://dev.21tx.com/web/javascript/" target="_blank">JavaScript</a>">     <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">   </HEAD>   <body MS_POSITIONING="GridLayout" style="FONT-SIZE:9pt">     <form id="Form1" method="post" runat="server">       <asp:Label id="Label1" runat="server"></asp:Label>       <asp:TextBox ID="xlfile" Runat="server"></asp:TextBox>       <br>       <br>       <asp:Button ID="ExportDataBase2Excel" Runat="server" />       <asp:Button ID="ExportDataGrid2Excel" Runat="server" />       <br>       <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" BorderColor="#CC9966"        BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4">         <ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>         <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>         <Columns>           <asp:BoundColumn DataField="Title"></asp:BoundColumn>           <asp:BoundColumn DataField="Author"></asp:BoundColumn>         </Columns>       </asp:DataGrid>     </form>   </body> </HTML>

DataGridToExcel.aspx.vb

Imports System Imports System.Data Imports System.Data.OleDb Imports OWC

Public Class DataGridToExcel   Inherits System.Web.UI.Page   Protected WithEvents xlfile As System.Web.UI.WebControls.TextBox   Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid   Protected WithEvents ExportDataGrid2Excel As System.Web.UI.WebControls.Button   Protected WithEvents ExportDataBase2Excel As System.Web.UI.WebControls.Button   Protected WithEvents Label1 As System.Web.UI.WebControls.Label   Protected mengxianhui As New HtmlGenericControl()

  Private cnn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="_    + Server.MapPath("Test.mdb"))   Private sql As OleDbCommand = New OleDbCommand("SELECT TOP 50 Title,Author FROM Document", cnn)

#Region " Web Form Designer Generated Code "

  'This call is required by the Web Form Designer.   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  End Sub

  Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs)_    Handles MyBase.Init     'CODEGEN: This method call is required by the Web Form Designer     'Do not modify it using the code editor.     InitializeComponent()   End Sub

#End Region

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_    Handles MyBase.Load     Label1.Text = "请输入要保存得文件名字:"     ExportDataGrid2Excel.Text = "由DataGrid生成Excel文件"     ExportDataBase2Excel.Text = "数据库直接生成Excel文件"     DataGrid1.Columns(0).HeaderStyle.HorizontalAlign = HorizontalAlign.Center     DataGrid1.Columns(0).HeaderText = "文章名称"     DataGrid1.Columns(1).HeaderText = "作者"     DataGrid1.Columns(0).HeaderStyle.Font.Bold = True     DataGrid1.Style.Add("font-size", "9pt")     mengxianhui.InnerText = "【孟宪会之精彩世界】- 将DataGrid输出到Excel文件"     Me.BindDataGrid()   End Sub

  Private Sub BindDataGrid()     cnn.Open()     Dim reader As OleDbDataReader = sql.ExecuteReader()     Me.DataGrid1.DataSource = reader     Me.DataGrid1.DataBind()     reader.Close()     cnn.Close()   End Sub

  Private Sub WriteDataGrid2Excel()     Dim xlsheet As New SpreadsheetClass()     cnn.Open()     Dim reader As OleDbDataReader = Me.sql.ExecuteReader()     Dim numbercols As Integer = reader.FieldCount     Dim row As Integer = 2     Dim i As Integer = 0     ' 输出标题     For i = 0 To numbercols - 1       xlsheet.ActiveSheet.Cells(1, i + 1) = reader.GetName(i).ToString()     Next

    ' 输出字段内容     While (reader.Read())       For i = 0 To numbercols - 1         xlsheet.ActiveSheet.Cells(row, i + 1) = reader.GetValue(i).ToString()       Next       row = row + 1     End While     reader.Close()     cnn.Close()     Try       xlsheet.ActiveSheet.Export(Server.MapPath(".") + "/Images/" + Me.xlfile.Text,_        OWC.SheetExportActionEnum.ssExportActionNone)     Catch e As System.Runtime.InteropServices.COMException       Response.Write("错误:" + e.Message)     End Try   End Sub

  Private Sub WriteDataGrid2Excel2()     Dim xlsheet As New SpreadsheetClass()     Dim i As Integer = 0     Dim j As Integer = 0     'Response.End()     ' 输出标题     Dim oItem As DataGridColumn     For Each oItem In DataGrid1.Columns       xlsheet.ActiveSheet.Cells(1, i + 1) = oItem.HeaderText       'xlsheet.ActiveSheet.Range(xlsheet.ActiveSheet.Cells(1, 1),_        xlsheet.ActiveSheet.Cells(1, i + 1)).Font.Bold = True       '设置格式       xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, i + 1)).Font.Bold = True       xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, i + 1)).Font.Color = "red"       i = i + 1     Next

    Dim numbercols As Integer = DataGrid1.Items.Item(0).Cells.Count     ' 输出字段内容     For j = 0 To DataGrid1.Items.Count - 1       For i = 0 To numbercols - 1         xlsheet.Range(xlsheet.Cells(2, 2), xlsheet.Cells(j + 2, i + 1)).Font.Color = "blue"         'xlsheet.Range("A2:B14").WrapText = True         xlsheet.Range(xlsheet.Cells(2, 1), xlsheet.Cells(j + 2, i + 1)).AutoFitColumns()         xlsheet.ActiveSheet.Cells(j + 2, i + 1) = DataGrid1.Items.Item(j).Cells(i).Text.Replace("&nbsp;", " ")       Next     Next     Try       xlsheet.ActiveSheet.Export(Server.MapPath(".") + "/Images/" + Me.xlfile.Text,_        OWC.SheetExportActionEnum.ssExportActionNone)     Catch e As System.Runtime.InteropServices.COMException       Response.Write("错误:" + e.Message)     End Try   End Sub

  Private Sub ExportDataGrid2Excel_Click(ByVal sender As Object,_    ByVal e As System.EventArgs) Handles ExportDataGrid2Excel.Click     If (Me.xlfile.Text.Trim() <> "") Then       Me.WriteDataGrid2Excel2()     End If   End Sub

  Private Sub ExportDataBase2Excel_Click(ByVal sender As Object, _    ByVal e As System.EventArgs) Handles ExportDataBase2Excel.Click     If (Me.xlfile.Text.Trim() <> "") Then       Me.WriteDataGrid2Excel()     End If   End Sub

End Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值