ASP.NET中数据库数据导入Excel并打印(2)
点击次数:19 次 发布日期:2008-11-27 00:00:41 作者:源代码网
|
源代码网推荐 源代码网推荐 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 源代码网推荐 Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable) 源代码网推荐 源代码网推荐 Response.ContentType = "application/ms-Excel" 源代码网推荐 源代码网推荐 Response.AddHeader("Content-Disposition", "inline;filename=test.xls") 源代码网推荐 源代码网推荐 Response.Write(ConvertDtToTDF(dt)) 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 Private Function ConvertDtToTDF(ByVal dt As DataTable) As String 源代码网推荐 Dim dr As DataRow, ary() As Object, i As Integer 源代码网推荐 Dim iCol As Integer 源代码网推荐 源代码网推荐 " 输出列标题 源代码网推荐 For iCol = 0 To dt.Columns.Count - 1 源代码网推荐 Response.Write(dt.Columns(iCol).ToString & vbTab) 源代码网推荐 Next 源代码网推荐 Response.Write(vbCrLf) 源代码网推荐 源代码网推荐 "输出数据 源代码网推荐 For Each dr In dt.Rows 源代码网推荐 ary = dr.ItemArray 源代码网推荐 For i = 0 To UBound(ary) 源代码网推荐 Response.Write(ary(i).ToString & vbTab) 源代码网推荐 Next 源代码网推荐 Response.Write(vbCrLf) 源代码网推荐 Next 源代码网推荐 End Function 源代码网推荐 End Class 源代码网推荐 源代码网推荐 在上面的代码中,首先将浏览器的输出类型设置为application/ms-Excel,并设置Excel的输出类型是在浏览器中输出,默认的名字为test.xls,之后,将调用自定义的过程,该自定义的过程将一个datatable里的数据以字符串流的形式输出,其中每个datatable里的数据之间以TAB制表符分隔,最后再输出到浏览器,输出效果如下图: 源代码网推荐
源代码网推荐 上面的这种方法,表现的形式比较简单,但也可以满足数据导出的基本要求。那如果要进一步修饰一下的话,要如何做呢?这里提供一个方法,可以将要导出的数据先绑定到datagrid,然后再打印该datagrid。这时就可以对要打印出来的datagrid进行格式化,设置datagrid的format等属性。代码如下: 源代码网推荐 源代码网推荐 Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 源代码网推荐 Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable) 源代码网推荐 源代码网推荐 Response.ContentType = "application/ms-Excel" 源代码网推荐 源代码网推荐 Response.AddHeader("Content-Disposition", "inline;filename=test.xls") 源代码网推荐 源代码网推荐 DataGrid1.DataSource = dt 源代码网推荐 DataGrid1.DataBind() 源代码网推荐 DataGrid1.RenderControl(writer) 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 打印出来的效果如下图: 源代码网推荐
源代码网推荐 如果要转到Word里面打印的话,也同样可以用上面的方法,只需要将其中的代码改成: 源代码网推荐 源代码网推荐 Response.ContentType = "application/ms-word" 源代码网推荐 Response.AddHeader("Content-Disposition", "inline;filename=test.doc") 源代码网推荐 源代码网推荐 最后,来看一下,如何调用客户端的Excel进行打印,就是让客户一点击"打印"的按钮,就可以自动打开客户端的Excel,将要打印的内容导入。要实现这样的效果,必须要求客户端的IE浏览器设置中,在其中的"安全-本地Intranet-自定义级别中",将"下载未签名ACTIVX"中设置为启动或提示。代码如下: 源代码网推荐 源代码网推荐 <script language="vbscript"> 源代码网推荐 Sub exportbutton_onclick 源代码网推荐 Dim sHTML, oExcel, oBook 源代码网推荐 SHTML = document.all.item("DataGrid1").outerhtml 源代码网推荐 Set oExcel = CreateObject("Excel.Application") 源代码网推荐 Set oBook = oExcel.Workbooks.Add 源代码网推荐 oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML 源代码网推荐 oBook.HTMLProject.RefreshDocument 源代码网推荐 oExcel.Visible = true 源代码网推荐 oExcel.UserControl = true 源代码网推荐 End Sub 源代码网推荐 </script> 源代码网推荐 源代码网推荐 在CODE-BEHIND的代码中,只需要这样写就可以了: 源代码网推荐 源代码网推荐 Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable) 源代码网推荐 DataGrid1.DataSource = dt 源代码网推荐 DataGrid1.DataBind() 源代码网推荐 源代码网推荐 当运行程序时,用户只需要点击EXPORT TO Excel的按钮,此时IE浏览器会提示是否允许ACTIVX控件交互,则选择"是",就可以打开客户端的Excel进行打印操作了。 源代码网推荐 源代码网推荐 以上是在ASP.NET中,常用的几种对Excel进行操作的方法,各有优劣,希望大家可以根据实际情况选用。 源代码网推荐 源代码网供稿. |
