欢迎光临
我们一直在努力

ASP.NET中数据库数据导入Excel并打印(2)-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的。如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码:
  
  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制表符分隔,最后再输出到浏览器,输出效果如下图:
  ASP.NET中数据库数据导入Excel并打印(2)-.NET教程,Asp.Net开发
    上面的这种方法,表现的形式比较简单,但也可以满足数据导出的基本要求。那如果要进一步修饰一下的话,要如何做呢?这里提供一个方法,可以将要导出的数据先绑定到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
  
    打印出来的效果如下图:
  ASP.NET中数据库数据导入Excel并打印(2)-.NET教程,Asp.Net开发
    如果要转到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进行操作的方法,各有优劣,希望大家可以根据实际情况选用。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP.NET中数据库数据导入Excel并打印(2)-.NET教程,Asp.Net开发
分享到: 更多 (0)