一、了解Jacob
项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下: 一、了解Jacob 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献
二、Jacob安装
1、我们解开下载的jacob_1.9.zip,在文件夹中找到jacob.dll和jacob.jar两个文件 2、将压缩包解压后,Jacob.jar添加到Libraries中; 3、将Jacob.dll放至“WINDOWS\SYSTEM32”下面。 需要注意的是: 【使用IDE启动Web服务器时,系统读取不到Jacob.dll,例如用MyEclipse启动Tomcat,就需要将dll文件copy到(经本人实践,发现此处应为JDK,不然会有问题哦)安装目录的“jre\bin”下面。最后需要关闭MyEclipse,再重启。 一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】
三、Excel转HTML。(已测)
package tools.jacob;
import java.io.File;
import java.io.IOException;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
* @author Jarvis H
* @version 2016-10-16 PM 09:28
* Describe
*/
public class JacobExcelToHtm {
public static final int EXCEL_HTML = 44;
public static final int WORD_HTML = 8;
public JacobExcelToHtm() {
// TODO Auto-generated constructor stub
}
public static void excelToHtml(String xlsfile, String htmlfile)
{
ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动Excel
try {
app.setProperty("Visible", new Variant(false));
Dispatch excels = app.getProperty("Workbooks").toDispatch();
Dispatch excel = Dispatch.invoke(
excels,
"Open",
Dispatch.Method,
new Object[] { xlsfile, new Variant(false),new Variant(true) },
new int[1]).toDispatch();
// Dispatch sheet = Dispatch.invoke(excel, "sheet(0)", arg2, arg3, arg4)
Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(EXCEL_HTML) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(excel, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
}
public static void main(String[] argv) {
method1();
// method2();
}
//测试excelToHtml方法 一直有问题 可能.dll文件问题
public static void method1(){
System.out.println(System.getProperty("java.library.path"));
File excelFile = new File("H:\\jacob-test\\excelToHtml\\exportExcel001.xlsx");
File htmlFile = new File("H:\\jacob-test\\excelToHtml\\exportExcel001.html");
if(!excelFile.exists()){
try {
File.createTempFile("测试Excel", ".xlsx", new File("H:\\"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(!htmlFile.exists()){
try {
File.createTempFile("测试Excel", ".html", new File("d:\\"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("---->method1");
System.out.println(excelFile.getAbsolutePath());
System.out.println(htmlFile.getAbsolutePath());
excelToHtml(excelFile.getAbsolutePath(), htmlFile.getAbsolutePath());
}
}
四、使用Jacob转换Word,Excel为HTML (转,未测)
传送门:Jacob转换Word,Excel为HTML