JAVA实现Word文档形式打开查看的内容

我对这个功能的理解是:拿到你想要显示的信息,写入到一个临时文件当中去以便插件进行编辑。把临时文件的相对路径传到页面去。页面拿到这个要显示的文档的相对路径对文档进行编辑在Word文档里面显示出来

后台代码部分:

@RequestMapping("check")
public String check(String wid,Model model,HttpServletResponse response,HttpServletRequest request) throws IOException{
UUidUtil uuid = new UUidUtil();
String uid = uuid.getUid();//去掉"-"的32位uuid
String fileName = "";//文件名称
String fileUrl = "";//文件路径
String absoluteOfficeFileDir = request.getServletContext().getRealPath("/")+ "resources/uploadOfficeFile"; //office文件的绝对路径
String relativeOfficeFileUrl = "../resources/uploadOfficeFile"; //office文件访问的相对路径
//读取内容写入临时文件,以便插件在线编辑
byte fileBody[] = new byte[10240];
Words word = wordsBiz.getWordByWid(wid);
fileName = word.getName()+".docx";
fileBody = word.getDesc().getBytes();
fileUrl = relativeOfficeFileUrl+"/"+uid+fileName;//相对路径,访问用
String inFileUrl= absoluteOfficeFileDir+ "/" +uid+fileName;//绝对路径,io操作所用
FileOutputStream fs = new FileOutputStream(inFileUrl);
fs.write(fileBody);
fs.flush();
fs.close();
model.addAttribute("fileUrl", fileUrl);
model.addAttribute("word", word);
return "wordscheck";
}

前台页面部分:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>office文档编辑</title>
<meta content="IE=7" http-equiv="X-UA-Compatible" />
<!--设置缓存-->
<!-- <meta http-equiv="cache-control" content="no-cache,must-revalidate">
<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="expires" content="0"> -->
<link href="/resources/css/StyleSheet.css" rel="stylesheet" type="text/css" />
<script type="text/javascript"> src="${pageContext.request.contextPath}/resources/js/jquery-1.11.3.js"></script>
</head>
<body onload=‘load("${fileUrl}");‘>
<form id="form1" action="upLoadOfficeFile.jsp" enctype="multipart/form-data" style="padding:0px;margin:0px;">
<input size="100" type="text" name="url" id="url" value="${fileUrl}"/>
<div id="editmain" class="editmain">
<div id="editmain_middle" class="editmain_middle">
<div id="editmain_right" class="editmain_right">
<div id="formtop">
<table>
<tr>
<td width="8%"> 文&nbsp;件&nbsp;ID:</td>
<td width="20%"><input name="flowInid" id="flowInid" readonly="readonly" type="text" value="${word.wid }" /></td>
<td width="8%">文件名称:</td>
<td width="20%"><input name="filename" id="filename" type="text" value="${word.name }" /></td>
<td>&nbsp;</td>
</tr>
</table>
<div id=statusBar style="height:20px;width:100%;background-color:#c0c0c0;font-size:12px;"></div>

//重点的JS 必须要加载的
<script language="javascript" type="text/javascript" src="${pageContext.request.contextPath}/resources/js/ntkoofficecontrol.js"></script>
<script type="text/javascript">

var OFFICE_CONTROL_OBJ;//控件对象
var IsFileOpened; //控件是否打开文档
var fileType;
var fileTypeSimple;
function load(fileUrl){
alert(fileUrl);

OFFICE_CONTROL_OBJ = document.all("TANGER_OCX");//浏览文档控件的加载必须要有的

NTKO_OCX_OpenDoc(fileUrl);//需要的内容加载进文档控件

}
function NTKO_OCX_OpenDoc(fileUrl) {
OFFICE_CONTROL_OBJ.BeginOpenFromURL(fileUrl);
}
</script>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

《ntkoofficecontrol.js》重点代码

document.write(‘<!-- 用来产生编辑状态的ActiveX控件的JS脚本--> ‘);
document.write(‘<!-- 因为微软的ActiveX新机制,需要一个外部引入的js--> ‘);
document.write(‘<object id="TANGER_OCX" classid="clsid:A39F1330-3322-4a1d-9BF0-0BA2BB90E970" ‘);
document.write(‘codebase="http://www.ntko.com/control/officecontrol/OfficeControl.cab#version=5,0,2,7" width="100%" height="100%"> ‘);
document.write(‘<param name="IsUseUTF8URL" value="-1"> ‘);
document.write(‘<param name="IsUseUTF8Data" value="-1"> ‘);
document.write(‘<param name="BorderStyle" value="1"> ‘);
document.write(‘<param name="BorderColor" value="14402205"> ‘);
document.write(‘<param name="TitlebarColor" value="15658734"> ‘);
document.write(‘<param name="TitlebarTextColor" value="0"> ‘);
document.write(‘<param name="MenubarColor" value="14402205"> ‘);
document.write(‘<param name="MenuButtonColor" VALUE="16180947"> ‘);
document.write(‘<param name="MenuBarStyle" value="3"> ‘);
document.write(‘<param name="MenuButtonStyle" value="7"> ‘);
document.write(‘<param name="WebUserName" value="NTKO"> ‘);
document.write(‘<param name="Caption" value="NTKO OFFICE文档控件示例演示 http://www.ntko.com"> ‘);
document.write(‘<SPAN STYLE="color:red">不能装载文档控件。请确认你可以连接网络或者检查浏览器的选项中安全设置。<a href="http://www.ntko.com/control/officecontrol/officecontrol.zip">安装演示产品</a></SPAN> ‘);
document.write(‘</object>‘);

时间: 2024-10-21 22:27:30

JAVA实现Word文档形式打开查看的内容的相关文章

Java读取word文档解决方案

java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

java 处理word文档 (含图片,表格内容)

由于本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 可以用jxl        或者poi 2需求     用户在系统上填写信息,保存后导出标准的word文档,用户在系统上填写的信息我们用富文本编辑工具kindEditor,这个插件可以将用户从word文档拷贝的表格标签保存,但是图片信息需要另行上传. 现在问题出来了,我们要将这些包含图片,表格,特殊符号的东东生成word文档. 如果是单纯的没有特殊格字符,图片等信息,

C# 复制一个Word文档的部分或全部内容到另一个Word文档

C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了. 扯远了,回到正题.复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了.这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始. 第一部分:复制部分内容: 在我的这个示例中,复制部分内

JAVA生成Word文档(经过测试)

首先告诉大家这篇文章的原始出处:http://www.havenliu.com/java/514.html/comment-page-1#comment-756 我也是根据他所描述完成的,但是有一些地方有点模糊,不容易弄出来.所以,我另外写一篇,让大家少走一些弯路. 上图:是Word文档中的内容,也就是模板,为了下面步鄹做铺垫,所以在需要输入数据的地方改成了拼音, 将word文档另存为xml文件. 接下来,上面写的拼音就起到作用了. 打开xml文件.搜索 title. 将Title 改为 ${t

[原创]java读写word文档,完美解决方案

做项目的过程中,经常需要把数据里里的数据读出来,经过加工,以word格式输出. 在网上找了很多解决方案都不太理想,偶尔发现了PageOffice,一个国产的Office插件,开发调用非常简单!比网上介绍的poi,jacob等解决方按容易上手多了!功能接口虽然没有poi,jacob那么多,但是满足了一般的需求的百分之八九十,而且不像poi那样还需要区分处理07格式和03格式那么麻烦. 下面是百度百科PageOffice的介绍: https://baike.baidu.com/item/PageOf

[转载]java读写word文档,完美解决方案

做项目的过程中,经常需要把数据里里的数据读出来,经过加工,以word格式输出. 在网上找了很多解决方案都不太理想,偶尔发现了PageOffice,一个国产的Office插件,开发调用非常简单!比网上介绍的poi,jacob等解决方按容易上手多了!功能接口虽然没有poi,jacob那么多,但是满足了一般的需求的百分之八九十,而且不像poi那样还需要区分处理07格式和03格式那么麻烦. 下面是百度百科PageOffice的介绍: https://baike.baidu.com/item/PageOf

[转载]Java生成Word文档

在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上是相同的,只不过在用程序生成word文档的时候换成了用代码来操作.下面的例子中主要有添加标题,正文(段落.字体.字号.倍行间距.对齐方式.首行缩进等),插入图片等操作.这里写的例子给出的内容只是PageOffice 组件生成word文件的部分方法,需要使用更多方法的还是要自己根据实际的需求去查看AP

Java生成word文档

itext-rtf-2.1.7.jar,下载地址:http://download.csdn.net/detail/xuxu198899223/7717727 itext-2.1.7.jar 下载地址:http://download.csdn.net/detail/xuxu198899223/7717717 package word; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arra

java导出word文档

使用freemarker模板导出word文档,用的比较多.这里也是采用的这种方式. 1  编辑一个word文件的模板,用于在程序中需要读入填充在模板中的数据先用字母代替,注意word版本为word2003或高于这个版本: 如:test.doc 2 把模板另存为xml文件: 如:test.xml 3 在xml中查找之前用字母代替的值 加上${} ,如${test}  ${guojia},把文件名改为test.ftl; 4 在项目的WebContent目录下新建一个文件夹,把test.xml放进去: