web报表打印大全

锐浪报表 Grid++Report uniGUI Web表格打印 一、uniGUI特点 uniGUI完全基于ExtJS,全面支持Ajax技术,开发快速便捷。它比Intraweb强,开发方便(采用的是Delphi原状态的winForm的方式开发WEB) ,界面起来越好,部署都很方便。 二、锐浪报表 Grid++Report针对Web的三种方式 WEB报表开发的三种方式(报表插件、HTML5报表报表服务器)共享相同的报表数据形式。 Grid++Report WEB报表的数据来源有多种方式,只要 WEB 服务器端与客户端能访问到的数据都可以 阅读详情

首先在网页中添加:

<OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>

然后就可以依次加入功能按钮了:

<input onclick="document.all.WebBrowser.ExecWB(6,1)" type="button" value="打印">

<input onclick="document.all.WebBrowser.ExecWB(6,6)" type="button" value="直接打印">

<input onclick="document.all.WebBrowser.ExecWB(8,1)" type="button" value="页面设置">


<input onclick="document.all.WebBrowser.ExecWB(7,1)" type="button" value="打印预览">

<INPUT type="button" value="关闭窗口" onclick="javascript:window.close()">

将这两块东西放到<center class=noprint></center>就不会打印这些按钮了。当然要定义noprint了:

<style media="print">.noprint{ DISPLAY: none }</style>只要把不想打印的东西的css设置成noprint就可以了。

现在就实现了基本的web打印,需要注意的情况如下:

  1. 必须将ie的internet选项的安全设置中对于没有标记为安全的ActiveX控件进行...设置成提示或者启用,否则会报错,导致不可用。
  2. 如果在vs.net编辑环境下编辑该页面,它经常自动的给object添加多余的参数,有了这些东西,打印就会出错,所以要记得最后保存的时候删除它们。

为了简便并且达到最好的效果,我们可以在一个页面实现编辑和打印,这时候会需要很多的textbox,我们把它的css设置成.edittext
{
overflow-y:visible;
width: 100%;
border-top: none;
border-right: none;
border-bottom: none;
border-left: none;
}就可以实现在打印的时候不显示边框和multiline的textbox不显示滚动条了。

还有一些小经验就是在设置标格宽度的时候,对于A4纸张,横打用920,竖打用640,效果最好。

相信用B/S方式做过应用的人都可能会遇到这样一个问题,如何方便、美观地实现报表打印。如果使用浏览器的打印菜单打印的话,将把网页上的一些无用的东西打到报表上,比如应用菜单等。因为选择打印菜单打印网页将会把网页中的所有内容全部打印出来,如果你的应用有分帧则打印内容将包括各帧中的内容,而你实际要的内容只是其中一部分。所以有很多应用就只能把打印功能放到后台完成了。   针对这种情况,我们该怎么办?其实可以有多种方法实现网页打印功能。

  一种方法就是使用专业的打印工具,如Crystal Reports(水晶报表)。用过Visual Studio 5.0的朋友肯定记得这个工具,不过那时的版本只有4.几。现在的最新版本已达9了,近几个版本的水晶报表都支持WEB打印。最简单的方法是先用水晶报表制作好模板,然后使用ASP带参数调用制作好的模板即可。水晶报表在网页上生成报表后,可以直接打印,也可以转存为其它的比较通过的文件如Excel文件。使用水晶报表可以制作出非常漂亮的样式,关键在你对水晶报表的开发能力上,但由于水晶报表价格较高,只有当项目很赚钱时才买得起。

  第二种方法是购买第三方的网上打印控件,费用同水晶报表相比便宜,但效果性能到底如何则仁者见仁了。


  第三种方法是利用样式表及JavaScript自定义函数实现。通过样式表及JavaScript,实现网页打印,效果也还可以。在此有一个实例请大家看看。下面是打印函数实现详解:
<script language="JavaScript" type="text/JavaScript">
<!--
function DP() {
if (window.print)
{
var Div1 = document.all.Div1.innerHTML;
var Div2 = document.all.Div2.innerHTML;
// *****************************************************
// Div1、Div2即为你在打印的区域
// 这里根据你要打印的哪些内容,从原显示页面中用
// <div id=Div1>Div1....</div><div id=Div2>Div2...</div>
// 等标示出来,要打印多少项目就标示多少
// *****************************************************

var css = '<style type="text/css" media=all>' +
'p { line-height: 120%}' +
'.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +
'td { font-size: 10px; color: #000000}' +
'</style>' ;
// *****************************************************
// 定义打印用的CSS,具体你想打印出什么样的格式全看你自己
// 了,但要注意:如果此处有什么同网页中不一致的,可能打印
// 出来的页面同网页格式、字体可能会有所不同
// *****************************************************

var body ='<table width="640" border="0" cellspacing="0" cellpadding="5">' +
' <tr> ' +
' <td class="fbody"> ' +
' <div align="center" class=ftitle>' + Div1 + '</div>' + Div2 +
' </td>' +
' </tr>' +
'</table>';
// ******************************************************
// 在此处重新设置的打印格式,根据你的打印要求,将原显示的
// 网页的DIV内容重新组合,可以根据你原来的表格内容,去掉
// 不要打印的,你也可以能下面定义的noprint忽略掉你不想打
// 印的东西,只调用你要打印的内容,但这样被忽略掉的地方将
// 打印出空,不是很美观。表格宽度要同打印的纸张宽度匹配。
// ******************************************************

document.body.innerHTML = '<center>' + css + body + '</center>';
// ******************************************************
// 重设document.body,打印文档准备就绪
// ******************************************************

window.print();
window.history.go(0);
// ******************************************************
// 调用打印命令,打印当前窗口内容。当你打印时其实是一张新
// 的网页了,但网页文件还是原先的。紧接着调用
// window.history.go(0),再回到打印前的页面,效果相当不差
// ******************************************************
}
}
-->
</script>

<style>
@media print {
.noprint {display:none}
}
</style>
<!--//.noprint 定义了noprint,在以下不需要打印的地方加入 class="noprint"后,用window.print()打印就会忽略-->
  好了,一切就绪了,现在要做的就是调用DP函数,如果你将实现调用的按钮设计在同一张网页上,则直接调用即可;如果你用了分帧方法,实现调用的按钮是在另一张网页上,则在DP函数的第一行加入window.focus()命令,否则打印的只是有按钮的网页。

  第四种方法,实现是一种取巧的方法。一样还是通过调用window.print()实现,只是将你要打印的内容专门生成一张网页,而打印按钮在另一帧上。假设报表网页在mainFrame上,按钮在topFrame上,按钮调用PrintReports()函数,PrintReports()函数如下即可实现打印工作。
function PrintReports() //topFrame网页中的函数
{
try
// *******************************************************
// 错误处理,如果在mainFrame中的网页没有DP函数则不打印
// *******************************************************
{
window.parent.frames("mainFrame").DP();
}
catch(e)
{
alert("no object to print!");
}
}
function DP() // mainFrame网页中函数
{
window.focus();
if (window.print)
{
window.print();
}
}

 

关于这个组件还有其他的用法,列举如下: 
  WebBrowser.ExecWB(1,1) 打开 
  Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 
  Web.ExecWB(4,1) 保存网页 
  Web.ExecWB(6,1) 打印 
  Web.ExecWB(7,1) 打印预览 
  Web.ExecWB(8,1) 打印页面设置 
  Web.ExecWB(10,1) 查看页面属性 
  Web.ExecWB(15,1) 好像是撤销,有待确认 
  Web.ExecWB(17,1) 全选 
  Web.ExecWB(22,1) 刷新 
  Web.ExecWB(45,1) 关闭窗体无提示

参数列表WebBrowser.ExecWB(nCmdID, nCmdExecOpt) :

(a).nCmdID 
OLECMDID_OPEN = 1, 
OLECMDID_NEW = 2, 
OLECMDID_SAVE = 3, 
OLECMDID_SAVEAS = 4, 
OLECMDID_SAVECOPYAS = 5, 
OLECMDID_PRINT = 6, 
OLECMDID_PRINTPREVIEW = 7, 
OLECMDID_PAGESETUP = 8, 
OLECMDID_SPELL = 9, 
OLECMDID_PROPERTIES = 10, 
OLECMDID_CUT = 11, 
OLECMDID_COPY = 12, 
OLECMDID_PASTE = 13, 
OLECMDID_PASTESPECIAL = 14, 
OLECMDID_UNDO = 15, 
OLECMDID_REDO = 16, 
OLECMDID_SELECTALL = 17, 
OLECMDID_CLEARSELECTION = 18, 
OLECMDID_ZOOM = 19, 
OLECMDID_GETZOOMRANGE = 20 
OLECMDID_UPDATECOMMANDS = 21 
OLECMDID_REFRESH = 22 
OLECMDID_STOP = 23 
OLECMDID_HIDETOOLBARS = 24 
OLECMDID_SETPROGRESSMAX = 25 
OLECMDID_SETPROGRESSPOS = 26 
OLECMDID_SETPROGRESSTEXT = 27 
OLECMDID_SETTITLE = 28 
OLECMDID_SETDOWNLOADSTATE = 29 
OLECMDID_STOPDOWNLOAD = 30  

(b).nCmdExecOpt 
OLECMDEXECOPT_DODEFAULT = 0, 
OLECMDEXECOPT_PROMPTUSER = 1, 
LECMDEXECOPT_DONTPROMPTUSER = 2, 
OLECMDEXECOPT_SHOWHELP = 3
 

实现Web Client上的html报表直接打印 读了一下openerp新版本的代码,的确有不少的改进。尤其是web client,基本上是推倒重写的。 看官方的论坛上很多人在问如何在web client上实现报表的直接打印,想想现在的打印的确是不方便,总是把文件下载下来,然后打开文件打印。 html的报表容易想到,因为可以直接在web client打开一个新窗口,用js进行打印。于是就改改openerp代码,实现一个简单的html报表的。供 阅读详情

相关推荐

C#打印水晶报表

大家平时做一个项目的时候,总有需要做打印这个模块的,既然有需要那现在就教大家如何做水晶报表。 第一、安装插件。这是一个需要借助下图插件才能完成的报表,如果不知道安装是否成功的,可以先进行第二步操作。 第二、建存放打印相关的文件夹。建与控制器文件夹并列就好。建好后可以按右键选择新建项对插件进行检验是否安装成功。新建项中有Reporting这个项,如果没有这个项就是失败,但有的话选择它可以看到下图中...

qq_44484552的博客 2991

巧用ASP实现Web数据统计、报表打印

 巧用ASP实现Web数据统计、报表打印 摘  要:本文阐述一种利用ASP实现Web数据统计、报表的基本思路和实现方法,同时提供一种巧妙调用Word打印报表的解决方案。关键词: ASP,数据统计,报表打印,Word 1、 引言随着Internet的飞速发展,基于Web开发的业务应用系统越来越多,如办公自动化、电子商务和管理信息系统(MIS)等。这些Web业务应用系统

yu77的专栏 3258

探索Web打印控件:网页开发中的打印解决方案

本文还有配套的精品资源,点击获取 简介:Web打印控件是网页开发中用于直接在浏览器中打印网页内容或数据报告的工具,尤其适用于企业级应用和数据分析系统。本文将探讨Web打印控件的实现方式,包括JavaScript打印、ActiveX控件、Java Applet、HTML5打印API以及第三方控件。重点介绍兼容性、用户界面、性能优化和安全性等关键考虑因素,并讨论Web打印控件在...

weixin_30299319的博客 4307

Web打印水晶报表的四种方法

Web打印水晶报表的四种方法请参见:报表分发如果想使用户能够打印Web 上访问的整个多页报表,您有下列选项: 1、使用Web 窗体 Viewer 工具栏上的“打印”按钮将报表导出为 PDF。 2、使用Web 窗体 Viewer 工具栏上的“导出”按钮,导出报表为可以由客户端的现有应用程序打印的格式。 3、使用PrintToPrinter 方法从服务器打印报表

haibodotnet的专栏 4186

Java Web报表打印产品 - XMReport

关于XMReport XMReport 1.1刚发布不久,先简单你介绍一下XMReport的特性吧: 国内首款基于HTML5的控件式报表,提供原生的在线模板编辑,维护功能。 功能全部自主研发,设计,几乎没有第三方依赖,体积小,操作流畅。 支持多种数据源,包括JDBC查询,JavaBean,JSON等,基于可以通过脚本动态创建你所需要的数据源,原生支持多数据集,大大方便了业务数据源的开发,方便集成...

mosmith的博客 1736

web报表开发技术专题六:尴尬的Web打印

      自从电脑被发明以来,将电脑中的内容打印出来是自然而然的需求。进入互联网时代后便更是如此。但要想完美地实现Web打印功能却并非易事,甚至于根本都不可能彻底地解决好这个问题。       记得很早以前田荣举(注:田荣举现任金蝶集团高级副总裁兼任首席技术官)和我私下聊过:“打印功能要占到整个系统开发量的两成”。打印功能是一个系统开发的重要组成部分。中国人历来好面子,往往要求有漂亮的打印,以...

weixin_33861800的博客 222

水晶报表

ASP.NET中水晶报表的使用http://www.knowsky.com/3319.html 官方水晶报表.NET 应用程序实例下载(C#、Visual C++.NET)http://www.weste.net/html/200408/20040825QBI101746.html 水晶报表合并模块大全http://dev.csdn.net/develop/article/26/26196.sh...

weixin_34247299的博客 101

关于Web报表FineReport打印的开发应用案例

报表打印报表使用和开发过程中经常碰到的问题,这里汇总了关于Web报表开发打印功能的一些典型应用案例,以应用最广泛的FineReport为例。

小小博客爱分享 4993

WEB水晶报表直接打印

WEB水晶报表直接打印 VS.NET2005 CrystalReport的打印模式分为Pdf和ActiveX两种,打印模式的设置在CrystalReportViewer.PrintMode 属性中。1、PDF模式的打印需在服务端及客户端安装pdf格式阅读器。2、ActiveX模式:ActiveX 打印控件允许使用者将报表直接打印至本机打印机。使用ActiiveX模式需要在Web

坚持,才是力量.老实做人,踏实做事. 1732

Web报表打印·简单实现

近日看到论坛中有好多人提到,Web 方式打印报表 的问题 都感觉很辣手。 本人有点小技巧愿意拿处来和大家分享。 本方法不分语言(ASP,ASP.NET,JSP,PHP..)可以生成HTML的语言都可以使用。 其实很简单只要你略懂 HTML,CSS 即可,打印的出来的效果(那就要看你自己了)个人认为一般的打印完全可以应付。 先给一个简单实用的方式(可以打印多页,控制分页,隐藏非打印项目) 报表

johncools的博客 1216

java web 界面表格_Web表格打印页面的生成

#re: Web表格打印页面的生成2008-01-24 14:25msungamp@java 你好,我遇到这个问题很久,由于数据太多,一个td里的东西在一个页面下根本放不下,就会分开俩页打,这就造成tr分成俩页,特别难看,下面是我的代码。你有什么好方法。能避免这准分页。计划信息打印function fReturn(){history.go(-1);}function select(key){//...

weixin_29310605的博客 605

前端:浏览器打印复杂表格 / 合并行 / 合并列 / 跨页处理 / @page 相关的页眉/页脚规则

一、需求 1.1、实现如图所示内容的打印 1.2、打印内容分析: 1.2.1、包括:1、页眉;2、页脚;3、表头;4、合并行;5、合并列;6、分页; 二、print.js 1、html打印 2、iframe打印 // 打印内容--可以直接使用 /** * @des 打印的方法 * @param {[String|Object]} body require true * @param {Array} styleList require false 样式 * @param {Stri

snow的博客 1731

也谈WEB打印(四):让我们的模板支持打印,并根据内容动态的生成页面

在上一篇文章《也谈WEB打印(三):抛开IE,实现我们自己的打印模板》中,我们写了一个自己的打印模板,然而,该模板并不支持打印,也只能显示2个页面。在本文,我们继续完善该模板,以让他支持打印,并且可以根据被打印的内容动态的生成页面。 废话少说,我们先来分析这个模板: <!-- Template2.htm: 一个很小的模板,它支持打印 这个模板展示了一个最小的打印模板,他可...

weixin_33953249的博客 692

web print.php,web-print 楚琳Web打印控件一辑般情况下可以利用报表 中提供的DesignReport函数进行 的在 WEB(ASP,PHP,...) 238万源代码下载- ww...

文件名称: web-print下载 收藏√ [5 4 3 2 1]开发工具: ASP文件大小: 16586 KB上传时间: 2013-10-26下载次数: 1详细说明:楚琳Web打印控件一辑般情况下可以利用报表控件中提供的DesignReport函数进行报表的在线设计,设计好后再调用ShowReport函数或PrintReport函数进行打印。当然也可以使用本软件提供的独立的报表设...

weixin_39597318的博客 423

Web打印的解决方案之普通报表打印

做过很多的Web项目,大多数在打印页面内容的时候,采用的都是通过Javascript调用系统内置的打印方法进行打印,也就是调用PrintControl.ExecWB(?,?)实现直接打印打印预览功能。打印的效果及控制性虽然不是很好,但是也能勉强使用,应付一般的打印还是可以的了。 代码如下所示: 代码 //调用PrintControl.ExecWB(?,?)实现直接打印打印预览功能。...

weixin_33769207的博客 211

java web 几种WEB报表打印方式

                最近在实现自动调用打印机功能。现在和大家分享一下,要源代码可以联系962589149                   之前因为需要,去学习了几种WEB报表打印方式,发现用Java直接去操作Word、Excel还是不那么方便,下面就简单介绍几种; 1、用浏览器自带的打印功能直接打印;   这种方式是最直接的,方便的,不需要加什么插件jar包,只要前台在...

yanming8888的专栏 1921

Web报表打印·简单实现·(一)

 近日看到论坛中有好多人提到,Web 方式打印报表 的问题 都感觉很辣手。本人有点小技巧愿意拿处来和大家分享。本方法不分语言(ASP,ASP.NET,JSP,PHP..)可以生成HTML的语言都可以使用。其实很简单只要你略懂 HTML,CSS 即可,打印的出来的效果(那就要看你自己了)个人认为一般的打印完全可以应付。先给一个简单实用的方式(可以打印多页,控制分页,隐藏非打印项目)报表.No

曲滨_銘龘鶽 4302
上一篇: wondow.open打开新窗口
下一篇: WEB常用的代码
nedvedno1
博客等级 码龄21年 8粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值