现在的位置: 首页 >> 网站编程 >> ASP.NET >> ASP.NET中数据库数据导入Excel并打印(2)
添加时间:2005-8-16 来源:网教中国 作者: 廖煜嵘编译
ASP.NET中数据库数据导入Excel并打印(2)

     大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的。如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:
  
  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进行操作的方法,各有优劣,希望大家可以根据实际情况选用。
  


上一篇:ASP.NET中数据库数据导入Excel并打印(1) 下一篇:提高ASP.Net应用程序性能的十大方法(一)
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·ASP.NET 2.0中构造个性化网页
·利用 ASP.NET 的内置功能抵御 We
·提高ASP.Net应用程序性能的十大(
·不用SQL语句查询DataTable中的数
·基于C#的接口基础教程之六(5)
·ASP.NET应用程序规划与设计(1)
·ASP.NET可交互式位图窗体设计(5)
·ASP.NET虚拟主机的重大安全隐患(
·在网页中动态的生成一个gif图片
·改写即时消息的发送,包含同时给
相关文章
·ASP.NET中数据库数据导入Excel并
最新文章
·《ASP.NET网站建设专家》目录
·《ASP.NET网站建设专家》前言
·用ASP.NET在同一网页中显示主从
·ASP.NET 如何操作文件
·ASP.NET 2.0中构造个性化网页
·利用 ASP.NET 的内置功能抵御 We
·.text urlRewrite介绍
·ASP.NET中为DataGrid添加合计字
·用 WebClient.UploadData 方法
·ASP.NET Cache
Google