之前因为需要,去学习了几种WEB报表的打印方式,发现用Java直接去操作Word、Excel还是不那么方便,下面就简单介绍几种;
1、用浏览器自带的打印功能直接打印;
这种方式是最直接的,方便的,不需要加什么插件jar包,只要前台在一个 div 中模仿着报表的格式去设置界面布局,然后把数据动态的填充进去,再调用JavaScript打印函数,就可以实现界面的局部打印功能。(如果不想让报表div在界面中显示出来可以隐藏之)PS:不过直接在前台界面打印还是会遇到意想不到的情况,不同浏览器的问题,反正我就遇到不同浏览器打印出来的报表排版不一的情况,用的 时候需要注意。
eg:
div布局
/******your code ******/
JavaScript部分:(自己根据需要选择触发响应的JS函数)
function windowprint() {var f= document.getElementById("printdiv");
f.style.display= "";window.print(); f.style.display = "none";
}
function myPrint(obj){
var newWindow=window.open("打印窗口","_blank");
var docStr=obj.innerHTML;
newWindow.document.write(docStr);
newWindow.document.close();
newWindow.print();
newWindow.close();
}
2、使用第三方插件完成报表打印编辑(这里介绍PageOffice 和 Jacob)
先说PageOffice,这是国产货,其强大之处在于其对Word的处理和它的在线编辑能力,最大的不足就是要收费(不过也不知道怎么收,下载的包里有自带的试用码,也不管先用着玩玩)
准备:去官网下载java版本的包(http://www.zhuozhengsoft.com/download.html),解压后需要把PageOffice.cab和pageoffice.jar两个包放到WEB-INF/lib中去还要在你的web.xml中加入以下部分:
poserver
com.zhuozhengsoft.pageoffice.poserver.Server
poserver
/poserver.do
poserver
/pageoffice.cab
poserver
/popdf.cab
poserver
/sealsetup.exe
adminseal
com.zhuozhengsoft.pageoffice.poserver.AdminSeal
adminseal
/adminseal.do
adminseal
/loginseal.do
adminseal
/sealimage.do
mht
message/rfc822
adminseal-password
123456
然后就可以直接用了
eg:直接贴一个Struts2下使用的Demo好了
import