java web实现在线预览word excel等文件,类似邮箱那种,非常感谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web实现在线预览word excel等文件,类似邮箱那种,非常感谢相关的知识,希望对你有一定的参考价值。

Excel这部分可以用SpreadJS,这是一个纯前端的控件,用于在线Excel表格展示预览操作。既然你是要实现在线预览,肯定是要包含前端的,SpreadJS本身是纯前端的,任何服务端语言都可以与之结合,所以java肯定也没问题。

Word这块可以找一找网上比较好的富文本工具,也可以实现word的在线预览。

参考技术A 幸运,我开发过又看到这个题。开始我用的是openoffice,需要安装这个软件,再用java调用这样。后面忘记出现了什么问题。改用xcode,都是免费的,这个更方便,这是相当于另一个部署项目,在原先项目上直接通过url访问到xcode就可以浏览,其中url参数包括文件地址,及一些设置参数,有文档可以自己参考。 参考技术B 幸运,我开发过又看到这个题。开始我用的是openoffice,需要安装这个软件,再用java调用这样。后面忘记出现了什么问题。改用xcode,都是免费的,这个更方便,这是相当于另一个部署项目,在原先项目上直接通过url访问到xcode就可以浏览,其中url参数包括文件地址,及一些设置参数,有文档可以自己参考。希望能帮到你。 参考技术C 我来回一下吧。因为前一段时间实验了一把畅写。

老板觉得MSO价格昂贵,让我们找替代品,有人人推荐我们使用腾讯文档等在线文档类的网站。也试用了几天,被老板说了。我让你们找的是Office类的不是在线笔记类的文件,当时我有点晕,不一样吗。后来才知道Office类的就是指可以很好兼容微软Office文件,更重要的是还要可以存成docx格式、微软也可以正确打开的。否则怎么向用户发送文件,给客户发送的文件一定是微软格式。

哦!原来那些所谓的在线文档是笔记类的私有格式,无法兼容微软格式导致的。

写了这么多,大家给个赞哈。

在百度里边搜索畅写就可以看到了哦。
参考技术D 自己学或者拿钱买。因为这个开发费点时间。

Java实现word文档在线预览,读取office文件

想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览。

一、使用openoffice方式实现word预览

主要思路是:

1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件

2.通过swfTools将pdf文件转换成swf格式的文件

3.通过FlexPaper文档组件在页面上进行展示

我使用的工具版本:

openof:3.4.1

swfTools:1007

FlexPaper:这个关系不大,我随便下的一个。推荐使用1.5.1

JODConverter:需要jar包,如果是maven管理直接引用就可以

操作步骤:

1.office准备

下载openoffice:

http://www.openoffice.org/download/index.html

从过往文件,其他语言中找到中文版3.4.1的版本

下载后,解压缩,安装

然后找到安装目录下的program 文件夹

在目录下运行

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

如果运行失败,可能会有提示,那就加上   .\\   在运行试一下

这样openoffice的服务就开启了。

2.

将flexpaper文件中的js文件夹(包含了flexpaper_flash_debug.js,flexpaper_flash.js,jquery.js,这三个js文件主要是预览swf文件的插件)拷贝至网站根目录;将FlexPaperViewer.swf拷贝至网站根目录下(该文件主要是用在网页中播放swf文件的播放器)

项目结构:

页面代码:

fileUpload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>文档在线预览系统</title>  
<style>  
    body {margin-top:100px;background:#fff;font-family: Verdana, Tahoma;}  
    a {color:#CE4614;}  
    #msg-box {color: #CE4614; font-size:0.9em;text-align:center;}  
    #msg-box .logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;}  
    #msg-box .title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;}  
    #msg-box .nav {margin-top:20px;}  
</style>  
  
</head>  
<body>  
<div id="msg-box">  
    <form name="form1"  method="post" enctype="multipart/form-data" action="docUploadConvertAction.jsp">  
        <div class="title">  
            请上传要处理的文件,过程可能需要几分钟,请稍候片刻。  
        </div>  
        <p>  
            <input name="file1" type="file">  
        </p>  
        <p>  
            <input type="submit" name="Submit" value="上传">  
        </p>  
    </form >  
</div>  
</body>  
</html>  

docUploadConvertAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  
<%@page import="java.io.*"%>  
<%@page import="java.util.Enumeration"%>  
<%@page import="com.oreilly.servlet.MultipartRequest"%>  
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>  
<%@page import="filetest.DocConverter"%>  
<%  
//文件上传采用cos组件上传,可更换为commons-fileupload上传,文件上传后,保存在upload文件夹  
//获取文件上传路径  
String saveDirectory =application.getRealPath("/")+"upload";  
//打印上传路径信息  
System.out.println(saveDirectory);  
//每个文件最大50m  
int maxPostSize = 50 * 1024 * 1024 ;  
//采用cos缺省的命名策略,重名后加1,2,3...如果不加dfp重名将覆盖  
DefaultFileRenamePolicy dfp = new DefaultFileRenamePolicy();  
//response的编码为"UTF-8",同时采用缺省的文件名冲突解决策略,实现上传,如果不加dfp重名将覆盖  
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"UTF-8",dfp);  
//MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"UTF-8");  
//输出反馈信息  
 Enumeration files = multi.getFileNames();  
     while (files.hasMoreElements()) {  
        System.err.println("ccc");  
       String name = (String)files.nextElement();  
       File f = multi.getFile(name);  
       if(f!=null){  
         String fileName = multi.getFilesystemName(name);  
         //获取上传文件的扩展名  
         String extName=fileName.substring(fileName.lastIndexOf(".")+1);  
         //文件全路径  
         String lastFileName= saveDirectory+"\\\\" + fileName;  
         //获取需要转换的文件名,将路径名中的\'\\\'替换为\'/\'  
         String converfilename = saveDirectory.replaceAll("\\\\\\\\", "/")+"/"+fileName;  
         System.out.println(converfilename);  
         //调用转换类DocConverter,并将需要转换的文件传递给该类的构造方法  
         DocConverter d = new DocConverter(converfilename);  
         //调用conver方法开始转换,先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf;  
         d.conver();  
         //调用getswfPath()方法,打印转换后的swf文件路径  
         System.out.println(d.getswfPath());  
         //生成swf相对路径,以便传递给flexpaper播放器  
         String swfpath = "upload"+d.getswfPath().substring(d.getswfPath().lastIndexOf("/"));  
         System.out.println(swfpath);  
         //将相对路径放入sessio中保存  
         session.setAttribute("swfpath", swfpath);  
         out.println("上传的文件:"+lastFileName);  
         out.println("文件类型"+extName);  
         out.println("<hr>");  
       }  
     }  
  
%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
<style>  
    body {margin-top:100px;background:#fff;font-family: Verdana, Tahoma;}  
    a {color:#CE4614;}  
    #msg-box {color: #CE4614; font-size:0.9em;text-align:center;}  
    #msg-box .logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;}  
    #msg-box .title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;}  
    #msg-box .nav {margin-top:20px;}  
</style>  
</head>  
<body>  
    <div>  
        <form name="viewForm" id="form_swf" action="documentView.jsp" method="POST">  
            <input type=\'submit\' value=\'预览\' class=\'BUTTON SUBMIT\'/>  
        </form>  
    </div>  
</body>  
</html>  

documentView.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
<%  
    String swfFilePath=session.getAttribute("swfpath").toString();  
%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<script type="text/javascript" src="js/jquery.js"></script>  
<script type="text/javascript" src="js/flexpaper_flash.js"></script>  
<script type="text/javascript" src="js/flexpaper_flash_debug.js"></script>  
<style type="text/css" media="screen">   
            html, body  { height:100%; }  
            body { margin:0; padding:0; overflow:auto; }     
            #flashContent { display:none; }  
        </style>   
  
<title>文档在线预览系统</title>  
</head>  
<body>   
        <div style="position:absolute;left:50px;top:10px;">  
            <a id="viewerPlaceHolder" style="width:820px;height:650px;display:block"></a>  
              
            <script type="text/javascript">   
                var fp = new FlexPaperViewer(     
                         \'FlexPaperViewer\',  
                         \'viewerPlaceHolder\', { config : {  
                         SwfFile : escape(\'<%=swfFilePath%>\'),  
                         Scale : 0.6,   
                         ZoomTransition : \'easeOut\',  
                         ZoomTime : 0.5,  
                         ZoomInterval : 0.2,  
                         FitPageOnLoad : true,  
                         FitWidthOnLoad : false,  
                         FullScreenAsMaxWindow : false,  
                         ProgressiveLoading : false,  
                         MinZoomSize : 0.2,  
                         MaxZoomSize : 5,  
                         SearchMatchAll : false,  
                         InitViewMode : \'SinglePage\',  
                           
                         ViewModeToolsVisible : true,  
                         ZoomTool

以上是关于java web实现在线预览word excel等文件,类似邮箱那种,非常感谢的主要内容,如果未能解决你的问题,请参考以下文章

求:JavaWEB实现Excel,Word ,PDF 等文档在线预览思路和源码Jar

如何用 Java 实现 wordexcel 等文档在线预览?

如何用 Java 实现 wordexcel 等文档在线预览?

用 Java 实现 wordexcel 等文档在线预览,这个真强!

怎么实现word,excel在线预览

Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attil