帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
ASP.NET中数据库数据导入Excel并打印(2)
作者:廖煜嵘编译 发布时间:2005-03-12 来源:ASPCOOL
     大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的。如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:
  
  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项  (2005-03-12)
 ·使用反射将业务对象绑定到 ASP.N  (2005-03-12)
 ·提高ASP.Net应用程序性能的十大方  (2005-03-12)
 ·提高ASP.Net应用程序性能的十大方  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统