大家都用什么方法实现web打印,欢迎交流!来者有分! 欢迎交流WEB打印心得!。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果客户没有什么太高的要求呢,就直接解析web页面,用jxl打印到excel如果一定要报表,我们公司从明宇公司买了一套报表,用起来还可以 我也正在琢磨这事呢,打算用JDK1.4里自己的Print方法,不知道好不好使,顺便在这里问一下,怎么样把从数据库中得到的数据保存成为.XLS或.TXT格式的文件,然后再打印呢? 请参考http://www.fcsoft.com.cn有问题请加[email protected] 报表速度慢最好是先以EXCEL 导出 再打印 利用脚本控制打印,可以采用如下方法:1、execCommand()方法Print 打开打印对话框以便用户可以打印当前页即document.execCommand('Print');2、window.print()3、 <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0> </OBJECT> <input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)> <input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> <input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)> 楼上说的不错。还有就是用JasperReport生成个PDF给用户吧。 用JasperReport不错或者用ScriptX.cab也很好操作的 <%@ page contentType="application/vnd.ms-excel;charset=GBK" %><%@ page language="java" import="java.sql.*,java.util.*, java.io.*,com.loulou.mssql.*,com.loulou.page.*, javax.servlet.ServletRequest, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse"%><jsp:useBean id="pc" scope="page" class="com.loulou.page.PageControl"/><jsp:useBean id="sq" scope="page" class="com.loulou.mssql.SQLUtil"/><jsp:useBean id="rsa" scope="page" class="com.loulou.mssql.RSUtil"/><head><meta http-equiv="Content-Type" content="application/vnd.ms-excel; charset=gb2312"></head><body><table border="1"><% String ip=request.getParameter("ip"); String dbName=request.getParameter("dbName"); String dbPot=request.getParameter("dbPot"); String userName=request.getParameter("userName"); String userPw=request.getParameter("userPw"); int pageSize,cpage; String ps = request.getParameter("pgSz"); String pg = request.getParameter("curPage"); String pgAll=""; if(pg==null) pgAll="all"; else pgAll=pg; String tbName=request.getParameter("tbname"); String tbid = request.getParameter("tbid"); if(tbName==null||tbName.trim().equals("")||tbid==null||tbid.trim().equals("")||ip==null||dbName==null||dbPot==null||userName==null||userPw==null) { out.println("alert('无法获取表信息,请重新选择表!');"); out.println("window.close();"); } else { response.addHeader("Content-Disposition","filename="+tbName+"-"+pgAll+".xls"); if(ps==null) pageSize=65534; else pageSize = java.lang.Integer.parseInt(ps); if(pg==null) cpage=1; else cpage = java.lang.Integer.parseInt(pg); MsSQLAction dba = new MsSQLAction(ip,dbName,dbPot,userName,userPw); MsSQLAction dba1 = new MsSQLAction(ip,dbName,dbPot,userName,userPw); int rows = 0,cols = 0; String[] tbcols = null; try { String sql="select * from "+tbName; ResultSet rs = dba.ExecQuery(sql); String[][] tb=rsa.getRecordArray(rs,pageSize,cpage); if(tb!=null) { rows = tb.length; cols = tb[0].length; tbcols=new String[cols-1]; String sql1 = "select colname,colcomment from user_cols where tbid='"+tbid+"' order by colid"; ResultSet rs1 = dba1.ExecQuery(sql1); String[][] tbNmCols = rsa.getRecordArray(rs1); if(tbNmCols!=null) tbcols = rsa.getTHeadStr(tb[0],tbNmCols); else for(int ii=0;ii<cols-1;ii++) tbcols[ii] = tb[0][ii]; } else {%> <tr> <td>查询打印数据错误</td> </tr><% }%> <tr><% for(int i1=0;i1<cols-1;i1++) {%> <td bgColor="#A79FCD" align="center"><%=tbcols[i1]%></td><% }%> </tr><% for(int i=4;i<rows;i++) {%> <tr><% for(int j=0;j<cols-1;j++) {%> <td><%=tb[i][j]%></td><% }%> </tr><% } }catch(Exception ex) { ex.printStackTrace(); } finally { dba.CloseAll(); dba1.CloseAll(); } }%></table></body> 用JasperReport + IReport,如果要漂亮的就生成PDF的,但是要求客户端安装PDF软件,如果要求不高就生成HTML,打印出来的虽然没有PDF那么漂亮但是至少客户那边也说得过去,比自己写的HTML页面打印出来漂亮多了。 eprint自定义打印是一个页面套打工具.它直接在IE浏览器中可视化的设计各种复杂的打印模版,能够解决在IE浏览器中打印各种复杂的中国式报表及票据。详见: http://218.30.103.110:8080/eprint/index.htm方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用. webprint是一个基于表格的页面打印解决方案.先将要打印的数据及样式组织到一个HTML的TABLE元素中, 然后将这个TABLE元素传给webprint,实现分页打印预览,出打印对话框打印和直接打印。 document.execCommand("print")配套css: page-break-before/after <html><head><meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5"><title>看看</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><!--media=print 这个属性可以在打印时有效--><style media=print>.Noprint{display:none;}.PageNext{page-break-after: always;}</style><style>.tdp{ border-bottom: 1 solid #000000; border-left: 1 solid #000000; border-right: 0 solid #ffffff; border-top: 0 solid #ffffff;}.tabp{ border-color: #000000 #000000 #000000 #000000; border-style: solid; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 1px; border-left-width: 1px;}.NOPRINT { font-family: "宋体"; font-size: 9pt;}</style></head><body ><center class="Noprint" > <p> <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0> </OBJECT> <input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)> <input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> <input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)></p> <p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)> <br/> </p> <hr align="center" width="90%" size="1" noshade></center><table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp"> <tr bgcolor="#990066"> <td colspan="3" class="tdp">第1页</td> </tr> <tr> <td width="29%" class="tdp"> </td> <td width="28%" class="tdp"> </td> <td width="43%" class="tdp"> </td> </tr> <tr> <td colspan="3" class="tdp"> </td> </tr> <tr> <td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" class="tdp"> </td> <td> </td> </tr> </table></td> </tr></table><hr align="center" width="90%" size="1" noshade class="NOPRINT" ><!--分页--><div class="PageNext"></div><table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp"> <tr> <td class="tdp">第2页</td> </tr> <tr> <td class="tdp">看到分页了吧</td> </tr> <tr> <td class="tdp"> </td> </tr> <tr> <td class="tdp"> </td> </tr> <tr> <td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" class="tdp"><p>这样的报表</p> <p>对一般的要求就够了。</p></td> <td> </td> </tr> </table></td> </tr></table><hr align="center" width="90%" size="1" noshade class="NOPRINT" ><div class="PageNext"></div><table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp"> <tr> <td class="tdp">第3页</td> </tr> <tr> <td class="tdp">看到分页了吧</td> </tr> <tr> <td class="tdp"> </td> </tr> <tr> <td class="tdp"> </td> </tr> <tr> <td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" class="tdp"><p>这样的报表</p> <p>对一般的要求就够了。</p></td> <td> </td> </tr> </table></td> </tr></table></body></html> 打印控件 virtual printer f1book控件不错,excel模板,和它说那个格子放什么内容就可以了. 网站访问量怎么实现 js冲突的问题 关于fileupload上传文件的速度问题 空指针异常 collection 是一个接口?为什么接口可以声明为泛型? Tomcat中配置Hibernate的一个问题 JSP中从一个页面中提交一个表示日期的字符串,如何转成日期型在SQL语句中做为条件查询数据 80分急求petstore的jbuider版本! 请问如何用jsp调用javaBean?(急!) 关于分页显示的问题,非常急 表中如何实现循环查找 请高手看看连接SQL2000数据库时哪错了。有错误提示代码。(急!!)
最好是先以EXCEL 导出
再打印
1、execCommand()方法
Print 打开打印对话框以便用户可以打印当前页
即document.execCommand('Print');2、window.print()3、 <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
<input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
还有就是用JasperReport生成个PDF给用户吧。
或者用ScriptX.cab也很好操作的
<%@ page language="java"
import="java.sql.*,java.util.*,
java.io.*,com.loulou.mssql.*,com.loulou.page.*,
javax.servlet.ServletRequest,
javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse"
%><jsp:useBean id="pc" scope="page" class="com.loulou.page.PageControl"/>
<jsp:useBean id="sq" scope="page" class="com.loulou.mssql.SQLUtil"/>
<jsp:useBean id="rsa" scope="page" class="com.loulou.mssql.RSUtil"/><head>
<meta http-equiv="Content-Type" content="application/vnd.ms-excel; charset=gb2312">
</head>
<body><table border="1">
<%
String ip=request.getParameter("ip");
String dbName=request.getParameter("dbName");
String dbPot=request.getParameter("dbPot");
String userName=request.getParameter("userName");
String userPw=request.getParameter("userPw");
int pageSize,cpage;
String ps = request.getParameter("pgSz");
String pg = request.getParameter("curPage");
String pgAll="";
if(pg==null)
pgAll="all";
else
pgAll=pg;
String tbName=request.getParameter("tbname");
String tbid = request.getParameter("tbid");
if(tbName==null||tbName.trim().equals("")||tbid==null||tbid.trim().equals("")||ip==null||dbName==null||dbPot==null||userName==null||userPw==null)
{
out.println("alert('无法获取表信息,请重新选择表!');");
out.println("window.close();");
}
else
{
response.addHeader("Content-Disposition","filename="+tbName+"-"+pgAll+".xls");
if(ps==null)
pageSize=65534;
else
pageSize = java.lang.Integer.parseInt(ps);
if(pg==null)
cpage=1;
else
cpage = java.lang.Integer.parseInt(pg);
MsSQLAction dba = new MsSQLAction(ip,dbName,dbPot,userName,userPw);
MsSQLAction dba1 = new MsSQLAction(ip,dbName,dbPot,userName,userPw);
int rows = 0,cols = 0;
String[] tbcols = null;
try
{
String sql="select * from "+tbName;
ResultSet rs = dba.ExecQuery(sql);
String[][] tb=rsa.getRecordArray(rs,pageSize,cpage);
if(tb!=null)
{
rows = tb.length;
cols = tb[0].length;
tbcols=new String[cols-1];
String sql1 = "select colname,colcomment from user_cols where tbid='"+tbid+"' order by colid";
ResultSet rs1 = dba1.ExecQuery(sql1);
String[][] tbNmCols = rsa.getRecordArray(rs1);
if(tbNmCols!=null)
tbcols = rsa.getTHeadStr(tb[0],tbNmCols);
else
for(int ii=0;ii<cols-1;ii++)
tbcols[ii] = tb[0][ii];
}
else
{
%>
<tr>
<td>查询打印数据错误</td>
</tr>
<%
}
%>
<tr>
<%
for(int i1=0;i1<cols-1;i1++)
{
%>
<td bgColor="#A79FCD" align="center"><%=tbcols[i1]%></td>
<%
}
%>
</tr>
<%
for(int i=4;i<rows;i++)
{
%>
<tr>
<%
for(int j=0;j<cols-1;j++)
{
%>
<td><%=tb[i][j]%></td>
<%
}
%>
</tr>
<%
}
}catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
dba.CloseAll();
dba1.CloseAll();
}
}
%></table></body>
能够解决在IE浏览器中打印各种复杂的中国式报表及票据。详见: http://218.30.103.110:8080/eprint/index.htm
方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用. webprint是一个基于表格的页面打印解决方案.先将要打印的数据及样式组织
到一个HTML的TABLE元素中, 然后将这个TABLE元素传给webprint,实现分页打印预
览,出打印对话框打印和直接打印。
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>看看</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style><style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 1px;
border-left-width: 1px;
}
.NOPRINT {
font-family: "宋体";
font-size: 9pt;
}</style></head><body >
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center><table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr bgcolor="#990066">
<td colspan="3" class="tdp">第1页</td>
</tr>
<tr>
<td width="29%" class="tdp"> </td>
<td width="28%" class="tdp"> </td>
<td width="43%" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp">
</td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第2页</td>
</tr>
<tr>
<td class="tdp">看到分页了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第3页</td>
</tr>
<tr>
<td class="tdp">看到分页了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>这样的报表</p>
<p>对一般的要求就够了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>