日期:2014-05-17 浏览次数:20866 次
word转换为html的代码如下,同时需要在C:\WINDOWS\system32 的目录下添加一个.DLL文件,DLL文件见附件。JAVA代码如下
import java.io.File;
import java.util.Calendar;
import java.util.Date;
import com.hifly.common.db.Db;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
* Word转换成Html
* jacob jar与dll文件下载: http://www.matrix.org.cn/down_view.asp?id=13
* 下载了jacob并放到指定的路径之后(dll放到path,jar文件放到classpath),就可以写你自己的抽取程序了,下面是一个简单的例子:
*
*
*/
public class WordToHtml {
/*
* 转换单个word文件
* origPath为原地址,包括扩展名doc
* destPath为转换后的文件地址,包括扩展名htm
*/
public static void word_To_Htm(String origPath , String destPath) throws Exception{
File ofile = new File(origPath);
File dfile = new File(destPath);
if(!destPath.endsWith(".htm")){
dfile = new File(destPath+".htm");
}
if(ofile.exists() && !dfile.exists()){
ComThread.InitSTA();
ActiveXComponent app = new ActiveXComponent(
"Word.Application");
try {
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] {origPath, new Variant(false),
new Variant(true) }, new int[1])
.toDispatch();
Dispatch.invoke(doc, "SaveAs", Dispatch.Method,
new Object[] { destPath, new Variant(8) },
new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
throw e;
} finally {
app.invoke("Quit", new Variant[] {});
ComThread.Release();
}
}
}
/**
* 把word文件转换成mht文件.转换完成后并自动关闭WORD文件
*/
public static void word_To_Mht(String wordFileName, String htmlFile) {
ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法
// Instantiate objWord //Declare word object
ActiveXComponent objWord = new ActiveXComponent("Word.Application");
// Assign a local word object
Dispatch wordObject = (Dispatch) objWord.getObject();
// Create a Dispatch Parameter to show the document that is opened
Dispatch.put((Dispatch) wordObject, "Visible", new Variant(true));// new
// Variant(true)表示word应用程序可见
// Instantiate the Documents Property
Dispatch documents = objWord.getProperty("Documents").toDispatch(); // documents表示word的所有文档窗口,(word是多文档应用程序)
// Add a new word document, Current Active Document
Dispatch document = Dispatch.call(documents, "Open", wordFileName)
.toDispatch(); // 使用Add命令创建一个新文档,用Open命令可以打开一个现有文档
Dispatch.invoke(document, "SaveAs", Dispatch.Method, new Object[] {
htmlFile, new Variant(8) }, new int[1]);
Dispatch.call(document, "Close");
Dispatch.call(wordObject, "quit");
ComThread.Release();// 释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理
}
/**
* 文档转换函数
*
* @param docfile
* word文档的绝对路径加文件名(包含扩展名)
* @param htmlfile
* 转换后的html文件绝对路径和文件名(不含扩展名)
*/
public static void change(String docfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
try {
app.setProperty("Visible", new Variant(false));
// 设置word不可见
Object docs = app.getProperty("Documents").toDispatch();
// Assign a local word object
Dispatch wordObject = (Dispatch) app.getObject();
// Create a Dispatch Parameter to show the document that is opened
// Dispatch.put((Dispatch) wordObject, "Visible", new
// Variant(true)