JSP生成WORD文档,EXCEL文档及PDF文档的方法
本文实例讲述了jsp生成word文档,excel文档及pdf文档的方法。分享给大家供大家参考,具体如下:
在web-oa系统中,公文管理好象不可或缺,有时需要从数据库中查询一些数据以某种格式输出来,并以word文档的形式展现,有时许多word文档保存到数据库中的某个表的blob字段里,服务器再把保存在blob字段中的图片文件展现给用户。通过网上查找发现很少有关于此类的文章,现在整理起来供大家参考。
1 在client端直接生成word文档
在jsp页面上生成word文档非常简单,只需把contenttype=”text/html”改为contenttype="application/msword; charset=gb2312"即可,代码如下:
通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码:
<% response.setheader("content-disposition", "attachment;filename=filename.doc"); %>
其中filename.doc中filename是要下载的word文档的文件名,可以通过<%=docname%>来自行定制,如下
<% response.setheader("content-disposition", "attachment;filename=<%=docname%>.doc"); %>
这样提供一个提示信息供用户选择。
小技巧:如果程序员需要在生成word文档的时候按照自己预先在word上设计好的格式,可以复制word格式然后粘贴到frontpage中,取html代码贴到jsp页面即可。
2 在客户端输出存在数据库中的word实体
这里只讨论在client输出oracle中blob字段中的word文档实体。其中调用了类getblobbean,该类提供了从oracle中取出blob功能,代码如下:
package yourpackage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import oracle.sql.*; import beans.yourbeanpackage. getblobbean; /** * <p>title: </p> * <p>description: </p> * <p>copyright: copyright (c) 2004</p> * <p>company: </p> * @author not attributable * @version 1.0 */ public class getblobservlet1 extends httpservlet { //设置输出内容类型,这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。 private static final string content_type = "application/msword;charset=gb2312"; //initialize global variables public void init() throws servletexception { } //process the http get request public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype(content_type); perform(request,response); } public void perform(httpservletrequest request, httpservletresponse response){ try{ //该类功能是从oracle哭中取出blob实体 getblobbean getblob=new getblobbean(); outputstream sos = response.getoutputstream(); getblob.connfunction(); oracle.sql.blob blob=getblob.getblob("cehui"); //输出word文档 if(blob!=null){ inputstream pi = blob.getbinarystream(); int blobsize =(int)blob.length(); byte[] blobbytes = new byte[blobsize]; int bytesread = 0; while ((bytesread = pi.read(blobbytes)) != -1) { sos.write(blobbytes, 0, bytesread); } pi.close(); sos.flush(); sos.close(); } getblob.dropconnfunction(); }catch(exception e){ system.out.println(e.tostring()); } } //clean up resources public void destroy() { } }
3 在client端直接生成excel文档
<%@ page contenttype="application/vnd.ms-excel; charset=gb2312" %> <% response.setheader("content-disposition", "attachment;filename=20050304.xls"); %> <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <title>生成</title> </head> <body> 生成例子excel 。 用word排版面,倒出html 把代码拷贝到网页里,然后这个jsp页面打印你就随心所欲的控制了。 </body> </html>
4 在client端直接生成pdf文档
需要下载jar包:以下代码在jdk1.4 resin2.16 下测试通过
itext包 http://mesh.dl.sourceforge.net/sourceforge/itext/itext-1.3.5.jar
字体包http://itext.sourceforge.net/downloads/itextasian.jar
jsp生成到客户ie端直接打开
ie_pdf.jsp:
<%@ page import="java.io.*,java.awt.color,com.lowagie.text.*,com.lowagie.text.pdf.*"%> <% response.setcontenttype( "application/pdf" ); document document = new document(); bytearrayoutputstream buffer = new bytearrayoutputstream(); pdfwriter writer=pdfwriter.getinstance( document, buffer ); document.open(); document.add(new paragraph("hello world")); document.close(); dataoutput output = new dataoutputstream( response.getoutputstream() ); byte[] bytes = buffer.tobytearray(); response.setcontentlength(bytes.length); for( int i = 0; i < bytes.length; i++ ) { output.writebyte( bytes[i] ); } %>
在服务器端生成不下载。
server_pdf.jsp:
<%@ page import ="com.lowagie.text.*,com.lowagie.text.pdf.*, java.io.*"%> <% string filename = "d://test//111111.pdf" ; document document = new document(pagesize.a4); servletoutputstream out1 = response.getoutputstream(); try{ pdfwriter writer = pdfwriter.getinstance(document, new fileoutputstream(filename) ); document.open(); document.add(new paragraph("hello world中文支持")); document.close(); } catch(exception e){} %>
使用itext可以设置文字的字体,对于我们中国的程序员来说如何显示中文是最紧要的问题。幸好itext中有一个专门的包用来设置亚洲国家的字体你可以从http://itext.sourceforge.net/downloads/itextasian.jar下载这个包。然后把它直接放到你的classpath中就可以了。如何设置字体呢?
basefont bfchinese = basefont.createfont("stsong-light", "unigb-ucs2-h", basefont.not_embedded); font fontchinese = new font(bfchinese, 12, font.normal);
在上面的代码中设置了中文字体的显示,你只要使用下面的代码就可以包中文加到pdf中了
string title = "我爱喝咖啡"; paragraph t = new paragraph(title, fontchinese); doc.add(t);
希望本文所述对大家jsp程序设计有所帮助。
上一篇: struts2+jsp实现文件上传的方法
下一篇: JSP简单添加,查询功能代码
推荐阅读
-
让谷歌浏览器打开Word2003, Excel和PPT2003文档的设置方法
-
jsp页面中显示word/excel格式的文档的方法
-
将PDF的文档放在Word文档中并将其打印的可行方法
-
ASP生成Word文档的又一方法
-
winform 替换word文档中的字段(包含图片添加),生成导出PDF文件(也可是word文件)
-
使用Doxygen生成全中文的chm、pdf帮助文档的方法
-
jsp实现针对excel及word文档的打印方法
-
C#向word文档插入新段落及隐藏段落的方法
-
ASP.NET Core 2.0集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)
-
在生成的PDF文档上添加文字的方法