• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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"即可,代码如下:

    复制代码 代码如下:
    %@ page 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程序设计有所帮助。

    您可能感兴趣的文章:
    • JavaScript代码生成PDF文件的方法
    • 使用jspdf生成pdf报表
    • jsPDF生成pdf后在网页展示实例
    • phonegap教程使用jspdf库在应用中生成pdf文件(pdf生成方法)
    • 利用iText在JSP中生成PDF报表
    • 基于Phantomjs生成PDF的实现方法
    上一篇:jsp之c标签用法实例分析
    下一篇:jsp实现从服务器下载xls文件到客户端的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP生成WORD文档,EXCEL文档及PDF文档的方法 JSP,生成,WORD,文档,EXCEL,及,