问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

(jsp)怎样实现把数据库的内容写入word文档?最好有个例子

发布网友 发布时间:2023-01-21 21:17

我来回答

1个回答

热心网友 时间:2023-11-02 13:39

在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); 原文链接地址: http://www.360doc.com/content/07/0824/18/25392_692506.shtml
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桑葚干直接吃还是泡水喝比较好桑葚干直接吃补肾吗 桑葚干泡水吃好还是干吃好 益智仁脑素神经酸片的功效与作用有哪些 黄冈师范学院师范专业有哪些 语文教育专业考研方向分析 黄冈师范学院语文教育专科毕业能拿教师资格证吗 php保留数字小数点后两位的方法 梦见被后咬 梦见母亲给赔鸡钱补了十二元的预兆 梦见门掉下来要二十五元修理费 小锅插卡是什么卡 跟信息有关的名言谚语 香皂洗脸和洗面奶洗脸的区别 香皂洗脸会变白吗 蜂巢蛋糕出炉后会塌的原因 蜂巢蛋糕的蜂巢不够细密,应该怎么改良? 蜂巢蛋糕静置时间久了,洞会少怎么回事 为什么这几天做的蜂巢蛋糕里面的洞很少了 为什么平安夜要送苹果呢? 平安夜为什么要送苹果给朋友? 平安夜为什么要互送苹果呢? 平安夜为什么要送苹果给别人吃? 刷刷油有宝能领金币吗 京东白条还有还款未还注销时会提醒吗 高中化合价口诀有哪些? 给对方支付宝转过账对方忘了支付宝用户名了怎么办 洗衣粉对皮肤有刺激吗 洗衣粉对皮肤的伤害 outlook邮件撤回功能在哪里 家里车子不够用,是买新车子合适,还是用共享单车合适? 公共自行车模式是政府部门通过购买服务实现的但没有考虑到给服务对象带... 宁波银行“快审快贷”缓解小微企业融资“痛点” 爱奇艺缓存电视剧多少流量 2022年上海个税收入 2021上海市个人所得税占财政的多少 上海个税税率表最新 平安银行 一账通 车主卡 为什么刷不了卡 一刷卡就显示超限额 急!!!河南工程学院的录取分数线。 ...工程大学(河南工程学院)2015年的专升本录取分数线和专科录取分数线是... 同时复制多个工作表有简便的方法吗 梦见下山山路太陡峭很危险 梦见下山走陡峭的山路什么意思 梦见下山走陡峭的山路 做梦梦到下陡坡很高很害怕是什么征兆 梦见找腰带 如何取消word文档的回车键 红参燕窝嫩白补水护肤品好用吗 怎么地下城与勇士我从U牌里剪切出来后下载到C盘怎么用不了 我在优牌上下载的车载音乐在车上怎么放不出来 怎么在Apple牌的mp4里下载歌曲啊? 棋牌软件从哪里下载 五人斗地主三副牌哪里下载