问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ASP打印输出EXCEL格式

发布网友 发布时间:2022-04-20 21:16

我来回答

1个回答

热心网友 时间:2023-09-08 22:50

  众所周知 WEB上的打印是比较困难的 常见的WEB上打印的方法大概有三种      直接利用IE的打印功能 一般来说 这种方法可以做些扩展 而不是单单的调用javascript:print()这样简单 比如 可以使用如下代码     <OBJECT  id=WebBrowser classid=CLSID: F A D A B C FD A height= width= >  </OBJECT>  <input  type=button value=打印 onclick=document all WebBrowser ExecWB( )>  <input  type=button value=直接打印 onclick=document all WebBrowser ExecWB( )>  <input  type=button value=页面设置 onclick=document all WebBrowser ExecWB( )>  <input  type=button value=打印预览 onclick=document all WebBrowser ExecWB( )>    这种方法可以适用于简单的数据打印 对系统要求不高 但不足之处在于可以控制的能力比较差 比如处理分页等问题      利用水晶报表或其他第三方工具 如微软的Reporting service 水晶报表或其他第三方控件的打印 一般是导出到Excel WORD PDF等再进行打印的 效果比较好 但编程比较复杂 控制起来也不大方便 而且这些工具都是要收费的      将数据库的数据或要打印的内容导出到Excel Word中去打印 使用这种方法 可以在服务端或者客户端进行 在服务端使用的话 要求服务端要安装Word Excel 在客户端使用的话 要求客户端在IE的安全设置上有一定要求 使用这种方法 可适应性比较强 控制较好 本文将以在ASP NET中使用Excel为例子 介绍如何将数据导出到Excel的几种方法     首先 先介绍在服务端使用Excel的方法 要在服务器端使用Excel 必须要求服务器端安装Excel 并且要求一定的访问权限 比如 需要添加<identity impersonate= true />到nfig中 在本文中 要给予WEB目录可写的权限     接下来 使用VS NET 新建一个VB NET的工程 并添加引用 由于我们要使用的是Excel 所以添加一个关于的应用 这里添加的是Microsoft Excel Object Library 之后 添加的代码如下     Imports System Runtime InteropServices Marshal  Imports Office  Private Sub Page_Load(ByVal sender As System Object ByVal e As System EventArgs) Handles MyBase Load   以方式处理Excel  Dim oExcel As New Excel Application  Dim oBooks As Excel Workbooks oBook As Excel Workbook  Dim oSheets As Excel Sheets oSheet As Excel Worksheet  Dim oCells As Excel Range  Dim sFile As String sTemplate As String   定义一个datatable  Dim dt As DataTable = CType(Application Item( MyDataTable ) DataTable)    sFile = Server MapPath(Request ApplicationPath) & \MyExcel xls    定义模版文件  sTemplate = Server MapPath(Request ApplicationPath) & \MyTemplate xls   oExcel Visible = False  oExcel DisplayAlerts = False   定义一个新的工作簿  oBooks = oExcel Workbooks  oBooks Open(Server MapPath(Request ApplicationPath) & \MyTemplate xls ) oBook = oBooks Item( )  oSheets = oBook Worksheets  oSheet = CType(oSheets Item( ) Excel Worksheet)     命名该sheet  oSheet Name = First Sheet   oCells = oSheet Cells   调用mpdata过程 将数据导入到Excel中去  DumpData(dt oCells)   保存  oSheet SaveAs(sFile)  oBook Close()     退出Excel 并且释放调用的资源  oExcel Quit()  ReleaseComObject(oCells) : ReleaseComObject(oSheet)  ReleaseComObject(oSheets) : ReleaseComObject(oBook)  ReleaseComObject(oBooks) : ReleaseComObject(oExcel)  oExcel = Nothing : oBooks = Nothing : oBook = Nothing  oSheets = Nothing : oSheet = Nothing : oCells = Nothing  System GC Collect()  Response Redirect(sFile)  End Sub     将DATATABLE的内容导出到Excel的单元格中去  Private Function DumpData(ByVal dt As DataTable ByVal oCells As Excel Range) As String  Dim dr As DataRow ary() As Object  Dim iRow As Integer iCol As Integer     输出列标题  For iCol = To dt Columns Count   oCells( iCol + ) = dt Columns(iCol) ToString  Next     将数据导出到相应的单元格  For iRow = To dt Rows Count   dr = dt Rows Item(iRow)  ary = dr ItemArray  For iCol = To UBound(ary)  oCells(iRow + iCol + ) = ary(iCol) ToString  Response Write(ary(iCol) ToString & vbTab)  Next  Next  End Function  End Class    在上面的代码中 首先 先定义了一些关于Excel的对象 如application workbook sheets sheet等 这些都是在使用Excel的对象时 必不可少的 之后 我们事先先定义了一个Excel的模版文件 并且用Excel先打开这个模版文件 再调用一个自定义的过程mpdata 在这个自定义的过程中 将datatable中的数据 逐一导入到Excel的单元格中去 读者自己可以慢慢体会下 上面的代码中 是如何将datatable中的数据导出到Excel中去的 程序运行后 可以在当前的工作目录下 生成名为myExcel xls的Excel文件 如下图      大家可能觉得上面的代码比较复杂 因为上面对于对打印要求比较高的应用 是十分有效的 如果只是单单对数据进行导出 还可以使用简单的格式 比如使用以下的代码     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 = To dt Columns Count   Response Write(dt Columns(iCol) ToString & vbTab)  Next  Response Write(vbCrLf)     输出数据  For Each dr In dt Rows  ary = dr ItemArray  For i = 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 )    DataGrid DataSource = dt  DataGrid DataBind()  DataGrid 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 = em( DataGrid ) outer  Set oExcel = CreateObject( Excel Application )  Set oBook = oExcel Workbooks Add  oBook HTMLProject HTMLProjectItems( Sheet ) Text = sHTML  oBook HTMLProject lishixin/Article/program/net/201311/13741
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 Asp页面怎么调出打印Excel表格 被封多长时间可以解封? 东方心绮楼怎么汉化 月下绮谭汉化版 游戏 西汉马王堆一号墓出土的绮丝织品分别有什么? 四川省达州市汉宣县绮云南路聚城峰华的邮政编码是什么 上海汉绮网络科技有限公司怎么样? 月下绮谭汉化版 月下绮谭的汉化版游戏 阿里云盘磁力怎么用 苹果为什么无法安装阿里云盘 怎么用阿里云网盘下载磁力链 appletv怎么下载阿里云盘 阿里网盘下载到内存卡 阿里云盘可以下载电影吗 阿里云盘电脑端文件下载失败,手机可以下载? 阿里云盘怎么不保存直接下载 阿里云盘超过1000个文件怎么下载 apple tv怎么下载阿里云盘 怎么在极米上安装阿里云盘rv版 如何用asp将数据库中的数据导出并生成在excel或wor... asp.net怎么将表格中内容打印 asp.net中 生成一个EXCEL文件,怎么样可以保存在客... 如何将asp查询结果输出为excel表格 求ASP操作excel数据库 功能实现查看,修改,统计,... C# asp.net button直接打印目录下的excel时居然从... 想把ASP表单提交的页面转化到EXCEL然后输出打印,... asp 输出excel,数据一列一列增加,如何在最终列(... 在线请教:ASP网页上查询的数据如何输出到EXECL中? asp 导出excel 文件名,表名设置问题 代码如下: asp导入excel时遇到的问题 ASP页面中怎么导出Excel文档 asp导出excel文件大家有什么简便点的操作方法 asp生成EXCEL的问题 asp 页面显示问题, 我写了个导出到excel文件 需要... asp查询结果保存为excel文件 asp导出excel问题? 看望肝癌病人要送什么? 肝癌病人开刀后送什么好 看望肝癌病人带什么礼品好