java采用jacob操作word文档和Excel 转换成html文件
在这里主要是介绍一个中间件——Jacob,通过该组件你可以在java应用中调用COM组件和Win32 Library。
首先,需要下载Jacob包,JDK1.5需要使用Jacob1.9版本;JDK1.4及以下需要使用Jacob1.8及以下版本。
然后,将压缩包解压后,将Jacob.jar添加到Libraries中;
接着,将Jacob.dll放至WINDOWS/SYSTEM32中。注意:使用IDE启动WEB服务器时,系统是读取不到Jacob.dll,比如用MyEclipse启动Tomcat时就需要将dll文件拷贝到JDK的bin目录下。如果系统没有加载到Jacob.dll文件时,是会报如下错误的:java.lang.UnsatisfiedLinkError:no jacob in java.library.path。
代码如下:
- public class JacobUtil {
- public static final int WORD_HTML = 8;
- public static final int WORD_TXT = 7;
- public static final int EXCEL_HTML = 44;
- /**
- * WORD转HTML
- * @param docfile WORD文件全路径
- * @param htmlfile 转换后HTML存放路径
- */
- public static void wordToHtml(String docfile, String htmlfile) {
- ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
- try {
- app.setProperty("Visible", new Variant(false));
- Dispatch docs = app.getProperty("Documents").toDispatch();
- Dispatch doc = Dispatch.invoke(
- docs,
- "Open",
- Dispatch.Method,
- new Object[] { docfile, new Variant(false),
- new Variant(true) }, new int[1]).toDispatch();
- Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
- htmlfile, new Variant(WORD_HTML) }, new int[1]);
- Variant f = new Variant(false);
- Dispatch.call(doc, "Close", f);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- app.invoke("Quit", new Variant[] {});
- }
- }
- /**
- * EXCEL转HTML
- * @param xlsfile EXCEL文件全路径
- * @param htmlfile 转换后HTML存放路径
- */
- public static void excelToHtml(String xlsfile, String htmlfile) {
- ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word
- 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.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[] {});
- }
- }
- }
至此,Word/Excel转换HTML就已经差不多了

浙公网安备 33010602011771号