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

怎样将用struts2 jsp 将word文档展现在网页上,而且不需要选在是否保存 下载

发布网友 发布时间:2022-04-15 07:37

我来回答

2个回答

热心网友 时间:2022-04-15 09:07

一、把jsp页面数据复制到word文档

var table=document.getElementByIdx_x('printTable');
row=table.rows.length;
column=table.rows(1).cells.length;

var word = new ActiveXObject("Word.Application");
word.Application.Visible = true;
word.Selection.Text ="<%=reportTitle%>";
var mydoc=word.Documents.Add('',0,0);
myRange =mydoc.Range(0,1);
var sel=document.body.createTextRange();
sel.moveToElementText(table);
sel.select();
sel.execCommand('Copy');
myRange.Paste();

二、把jsp页面数据写入word文档

var table=document.getElementByIdx_x('printTable');

row=table.rows.length;

column=table.rows(1).cells.length;

var wdapp=new ActiveXObject("Word.Application");

wdapp.visible=true;

wddoc=wdapp.Documents.Add(); //添加新的文档

thearray=new Array();

//将页面中表格的内容存放在数组中

for(i=0;i<row;i ){

thearray[i]=new Array();

for(j=0;j<column;j ){

thearray[i][j]=table.rows(i).cells(j).innerHTML;

}

}

var range = wddoc.Range(0,0);

range.Text="<%=reportTitle%>" " ";

wdapp.Application.Activedocument.Paragraphs.Add(range);

wdapp.Application.Activedocument.Paragraphs.Add();

rngcurrent=wdapp.Application.Activedocument.Paragraphs(3).Range;

var objTable=wddoc.Tables.Add(rngcurrent,row,column) //插入表格

for(i=0;i<row;i ){

for(j=0;j<column;j ){

objTable.Cell(i 1,j 1).Range.Text = thearray[i][j].replace(" ","");

}

}

三jsp生成word,excle,pdf

在web-oa系统中,公文管理好象不可或缺,有时需要从数据库中查询一些数据以某种格式输出来,并以word文档的形式展现,有时许多word文档保存到数据库中的某个表的Blob字段里,服务器再把保存在Blob字段中的图片文件展现给用户。通过网上查找发现很少有关于此类的文章,现在整理起来供大家参考。

1 在client端直接生成word文档
在jsp页面上生成word文档非常简单,只需把contentType=”text/html”改为contentType="application/msword; charset=gb2312"即可,代码如下:

通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码:

其中filename.doc中filename是要下载的word文档的文件名,可以通过来自行定制,如下
.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;

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文档
生成例子excel 。 用WORD排版面,倒出HTML 把代码拷贝到网页里,然后这个JSP页面打印你就随心所欲的控制了。

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

-------------------------------

在服务器端生成不下载。
server_PDF.jsp

使用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);

热心网友 时间:2022-04-15 10:25

直接拷别,,,,,,,
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
办公软件综合实训图书信息 什么是高分子材料与工程高分子材料与工程介绍 抖音超市普通人怎么入驻 抖音上的超市怎么入驻的 胃胀,有时还有点痛:还嗝气请问吃什么药, ...喝水也吐经常嗝气吃东西就胃胀气经常胃酸有时候胃特别热烧心的感觉... 它是指示代词还是人称代词 指示代词和人称代词语文 汉语指示代词和人称代词区别 长款的牛仔衣如何搭配最出彩? 梦见自己生了只黑猫 月薪上万的工作都有哪些? 工资是员工主要收入,现在什么工作可以月入过万? 广东公务员面试后多久出成绩? 省考什么时候出成绩面试 下载的word文件后缀名变成.jsp 打不开怎么办 威刚红色威龙8g2666能超频到多少并可以稳定下来?2666频率与3000的差别大吗?大百分之几? 怎么把人从qq黑名单拉出来? 2666赫兹的内存和3000的性能差别有多少 航空货运定价的基本内容和程序 航空货运的数据流程图怎么画呀! 《开讲啦》嘉宾截肢他是谁? 开讲啦那最好看? 廖智是哪一期参加的我们有一套 没有安装office,ie直接打开word excel,jsp实现 “九元航空官网”是骗人的吗? 九元航空客服电话没人接怎么办 九元航空客服是24小时 www.9air.com我购买的机票反了,要改过来怎么办? 九元航空微信公众号怎么购买票步骤 短篇言情小说,女主角是很理智的人,但有一次看到男主和别的女人一起 求一本小说 几年前的了 讲的是男主女主相爱在一起了,男主的前女友回来了,这时候男主得病了,只有前 男主姓墨,女主好像叫什么歌来着,男主喜欢穿一身红衣。而且男主在发病的时候只认识女主。谁知道是啥小说 女主重生,男主病弱。 上辈子两人也是相爱的,但是因为男主觉得自己身体太差给 男女主相爱因为些原因分开后来男主回来后女主生病了送女主去看病,发现女主没穿内衣然后就和女主发生了关 女主是穿越,后来才知道生的是男主弟弟的孩子,但男主的弟弟死了,开始互不喜欢,后来相爱的 找一本书,书名忘了。男主是有心脏病的,很有钱,有一个哥哥,因为男主身体关系一直很宠他。 找本小说,言情的。 一部小说讲的是男主死后另个灵魂附在他的身体上并且和女主相爱的故事 什么东西可以洗掉皮肤上的染发剂? 用什么去除染发剂粘在皮肤上 染头发时 染发膏搞皮肤上了 用什么可以洗掉? 请问! 我想直接用本地已有的程序的程序(比如word)打开数据库的文本文件怎么该怎么做!求救!!!java jsp 四代户户通用天线锅吗 华为p10plus怎样删除照片 华为P10 plus有没有自带一键清理功能? 华为P10 PLUS清理后台进程后,个别应用程序还能接收消息 华为P10plus钻雕金后盖怎么清理 男宝宝4岁半了,怎样有效的交他认数字 华为p10plus这个图标怎么去掉,请教大虾 孩子四岁了,用什么方法教他写好数字?