大家可能觉得上面的代码比较复杂,因为上面对于对打印要求比较高的应用,是十分有效的。如果只是单单对数据进行导出,还可以使用简单的格式,比如使用以下的代码: 
   
  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并打印(2)的更多相关文章

  1. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  2. java数据库数据导入excel

    data导出入excel中 controller: package com.longfor.hrssc.api.controller; import com.longfor.hrssc.api.mod ...

  3. ASP.Net MVC中数据库数据导出Excel,供HTTP下载(转)

    转自http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于web ...

  4. ASP.Net MVC中数据库数据导出Excel,供HTTP下载

    本文来自:http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于 ...

  5. Java将数据库数据导入EXCEL

    一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现 须要导入一个第三方包下载地址 详细内容例如以下: 里面含有指导文档,index.html里面含有怎样读取数据库文 ...

  6. sql server 中数据库数据导入到另一个库中

    这篇说了sql语句对于备份的数据库进行还原 ,如果数据量大了还是什么问题,发现我的数据丢失了一些,头疼 sql server 备份还原 下面使用的的数据导入来解决这个问题,因为数据量比较大,导出来的脚 ...

  7. 利用python将mysql中的数据导入excel

    Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...

  8. 在java中实现数据导入excel表格中

    1.首先前端代码如下: 一个导出按钮:<input id="export" class="btn btn-primary" type="butt ...

  9. PHP把数据库数据导入Excel

    <?php function xlsBOF() { echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); return; ...

随机推荐

  1. c# B/S下 如何优化文件上传速度和实现断点续传问题

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  2. Python3学习笔记(八):集合

    集合(set)是一种可变的无序的不重复的数据类型 要创建集合,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔. >>> s = {'p','y','t','h','o', ...

  3. 使用FunctionalInterface提供工厂方法

    1. 首先提供User类 public class User { private int id; private String name; public User(int id, String nam ...

  4. [LeetCode]-011-Integer_to_Roman

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  5. 1、安装Scrapy

    一.网址:https://doc.scrapy.org/en/latest/intro/install.html 二.安装过程中出现"cl.exe"找不到的错误,解决方法:http ...

  6. webpack插件之htmlWebpackPlugin

    webpack插件之htmlWebpackPlugin webpack插件 自动化 htmlWebpackPlugin  由于webpack已经帮我们处理好js之间的依赖关系,现在我们可以忽略js的加 ...

  7. 在vi vim中使用正则表达式与 普通perl正则的区别?

    参考这篇文章很好 vim中的正则表达式常用的命令有种, 即搜索和替换 /: 搜索 :s 替换 在vim中的正则表达式和perl编程的正则表达式还是有区别的: 正则表达式中的内容包括: 字面字符... ...

  8. 转 实例具体解释DJANGO的 SELECT_RELATED 和 PREFETCH_RELATED 函数对 QUERYSET 查询的优化(二)

    https://blog.csdn.net/cugbabybear/article/details/38342793 这是本系列的第二篇,内容是 prefetch_related() 函数的用途.实现 ...

  9. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_8 properties标签的使用及细节

    properties 可以把数据库链接的配置放在上面的properties里面 #{占位符}的形式去引用上面的.下面的内容就是引用上面的内容的定义. 运行查询的方法测试一下 这样改造可以成功的运行程序 ...

  10. Delphi 快速检测是否联网 判断网线是否拔开。 但是不能判断是否能上网

    https://blog.csdn.net/chelen_jak/article/details/50204145 Delphi 快速检测是否联网 2015年12月07日 12:01:26 chele ...