jsp页面内显示word文档原内容

最近有这样一个需求要求在jsp页面当中能够原样显示wordexcel等文档,因为之前没有做过这方面,所以无从下手,网上查了好多,始终没有理想的结果,因为项目中要求尽量减少... 最近有这样一个需求 要求在jsp页面当中能够原样显示word excel等文档,因为之前没有做过这方面,所以无从下手,网上查了好多,始终没有理想的结果,因为项目中要求尽量减少第三方控件的使用,所以尽量想使用纯粹java语言来实现。求助大家有经验的请帮一下忙,谢了~ 展开
 我来答
wjs5398
2013-11-21 · TA获得超过281个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:171万
展开全部
1、利用jacob包将用户上传的word文件转换成htm格式,必须是“筛选过的网页”,不然显示不了图片;
2、将转换好的htm格式文档路径存入数据库,读的时候就在数据库里读。

jacob1.8包下载地址:http://sourceforge.net/projects/jacob-project/

可能会抛出no jacob in java.library.path异常,解决办法如下:
1、 把jacob.dll在 C:/Program Files/Java/jdk1.5.0_08/bin、C:/Program Files/Java/jdk1.5.0_08/jre/bin、 C:/WINDOWS/system32 目录下各.放一份
2、把jacob.jar放入 项目的lib包下

将word文档转换为htm格式的java代码如下:

import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
public class WordToHtml {
//将指定目录下面的指定doc文件转化为HTML并存储在savepaths目录下
public static void change(String filepaths, String savepaths) {
File f = new File(filepaths);
String filename = f.getName();
String filetype = filename.substring((filename.length() - 3), filename.length());// 取得文件类型
if (filetype.equals("doc")) {// 判断是否为doc文件
System.out.println("当前正在转换......");
// 打印当前目录路径
System.out.println(filepaths);
ActiveXComponent app = new ActiveXComponent("Word.Application");// 启动word
String docpath = filepaths;
String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));
String inFile = docpath;
// 要转换的word文件
String tpFile = htmlpath;
// HTML文件
boolean flag = false;
try {
app.setProperty("Visible", new Variant(false));// 设置word不可见
Object docs = app.getProperty("Documents").toDispatch();
Object doc = Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[] { inFile, new Variant(false),new Variant(true) },
new int[1]).toDispatch();// 打开word文件
/*
* new Variant(10)筛选过的网页
* new Variant(9) 单个文件网页
* new Variant(8) 另存为网页
* new Variant(7) 另存为txt格式
* new Variant(6) 另存为rtf格式
* new Variant(0) 另存为doc格式
*/
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {tpFile, new Variant(10) }, new int[1]);// 作为html格式保存到临时文件
Variant fl = new Variant(false);
Dispatch.call(doc, "Close", fl);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
System.out.println("转化完毕!");
}
}

public static void main(String[] args) {
//转换目录下的所有doc文件
// String paths = new String("D://test//");
String savepaths = new String("D://test//");
// changeAll(paths, savepaths);
//
//转换指定doc文件
String filepaths = "D://test.doc";
change(filepaths, savepaths);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式