Java中Office(word/ppt/excel)转换成HTML实现

时间:2023-03-09 08:25:14
Java中Office(word/ppt/excel)转换成HTML实现

运行条件:JDK + jacob.jar + jacob.dll

1) 把jacob.dll在 JAVA_HOME\bin\ 和 JAVA_HOME\jre\bin\ 以及C:\WINDOWS\system32\目录下各放一份
2) 把jacob.jar放入 项目的lib包下,并且在“java构建路径”中也要加载此jar包。
3) 运行项目即可编译通过.

注:jacob.jar以及jacob.dll版本要和jdk版本相匹配,否则可能出现异常!

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.*; public class OfficeToHTML { private final static OfficeToHTML oOfficeToHTML = new OfficeToHTML(); public static OfficeToHTML getInstance() {
return oOfficeToHTML;
} public OfficeToHTML() {
} public boolean WordtoHtml(String s, String s1) {
ComThread.InitSTA();
ActiveXComponent activexcomponent = new ActiveXComponent(
"Word.Application");
String s2 = s;
String s3 = s1;
boolean flag = false;
try {
activexcomponent.setProperty("Visible", new Variant(false));
Dispatch dispatch = activexcomponent.getProperty("Documents").toDispatch();
Dispatch dispatch1 = Dispatch.invoke(dispatch, "Open", ,
new Object[] { s2, new Variant(false), new Variant(true) },
new int[]).toDispatch();
Dispatch.invoke(dispatch1, "SaveAs", , new Object[] { s3,
new Variant() }, new int[]);
Variant variant = new Variant(false);
Dispatch.call(dispatch1, "Close", variant);
flag = true;
} catch (Exception exception) {
exception.printStackTrace();
} finally {
activexcomponent.invoke("Quit", new Variant[]);
ComThread.Release();
ComThread.quitMainSTA();
}
return flag;
} public boolean PPttoHtml(String s, String s1) {
ComThread.InitSTA();
ActiveXComponent activexcomponent = new ActiveXComponent(
"PowerPoint.Application");
String s2 = s;
String s3 = s1;
boolean flag = false;
try {
Dispatch dispatch = activexcomponent.getProperty("Presentations")
.toDispatch();
Dispatch dispatch1 = Dispatch.call(dispatch, "Open", s2,
new Variant(-), new Variant(-), new Variant())
.toDispatch();
Dispatch.call(dispatch1, "SaveAs", s3, new Variant());
Variant variant = new Variant(-);
Dispatch.call(dispatch1, "Close");
flag = true;
} catch (Exception exception) {
System.out.println("|||" + exception.toString());
} finally {
activexcomponent.invoke("Quit", new Variant[]);
ComThread.Release();
ComThread.quitMainSTA();
}
return flag;
} public boolean ExceltoHtml(String s, String s1) {
ComThread.InitSTA();
ActiveXComponent activexcomponent = new
ActiveXComponent("Excel.Application");
String s2 = s;
String s3 = s1;
boolean flag = false;
try
{
activexcomponent.setProperty("Visible", new Variant(false));
Dispatch dispatch =
activexcomponent.getProperty("Workbooks").toDispatch();
Dispatch dispatch1 = Dispatch.invoke(dispatch, "Open", , new
Object[] {
s2, new Variant(false), new Variant(true)
}, new int[]).toDispatch();
Dispatch.call(dispatch1, "SaveAs", s3, new Variant());
Variant variant = new Variant(false);
Dispatch.call(dispatch1, "Close", variant);
flag = true;
}
catch(Exception exception)
{
System.out.println("|||" + exception.toString());
}
finally
{
activexcomponent.invoke("Quit", new Variant[]);
ComThread.Release();
ComThread.quitMainSTA();
}
return flag;
} public static void main(String args[]) {
OfficeToHTML otx = OfficeToHTML.getInstance();
boolean flag1 = otx.PPttoHtml("e:/test/test3.pptx", "e:/test/test3.html");
if(flag1){
System.out.println("PPT文件转换成HTML成功!");
}else{
System.out.println("PPT文件转换成HTML失败!");
}
}
}