隨筆-208  評(píng)論-469  文章-30  trackbacks-0

          首先我已經(jīng)做了如下配置:
          1.導(dǎo)入 jacob.jar 這個(gè)包。
          2.把 jacob.dll 拷貝到 C:\WINDOWS\system32 目錄下。
          以上的兩個(gè)文件您可以到網(wǎng)上http://danadler.com/jacob/?下載的1.7的版本
          jacob.jar 與 jacob.dll 版本一致。

          代碼如下:
          package one;

          import com.jacob.com.*;
          import com.jacob.activeX.*;
          import java.io.*;
          //取得指定目錄下面所有的doc文件名稱
          public class wordtohtml2 {
          ?// ------------------------------------------------------------------------------
          ?// 方法原型: change(String paths)
          ?// 功能描述: 將指定目錄下面所有的doc文件轉(zhuǎn)化為HTML(html文件夾必須存在)并存儲(chǔ)在相同目錄下
          ?// 輸入?yún)?shù): String
          ?// 輸出參數(shù): 無
          ?// 返 回 值: 無
          ?// 其它說明: 遞歸
          ?// ------------------------------------------------------------------------------
          ?public static void change(String paths, String savepaths) {
          ? File d = new File(paths);
          ? // 取得當(dāng)前文件夾下所有文件和目錄的列表
          ? File lists[] = d.listFiles();
          ? String pathss = new String("");
          ? // 對當(dāng)前目錄下面所有文件進(jìn)行檢索
          ? for (int i = 0; i < lists.length; i++) {
          ?? if (lists[i].isFile()) {
          ??? String filename = lists[i].getName();
          ??? String filetype = new String("");
          ??? // 取得文件類型
          ??? filetype = filename.substring((filename.length() - 3), filename.length());
          ??? // 判斷是否為doc文件
          ??? if (filetype.equals("doc")) {
          ???? System.out.println("當(dāng)前正在轉(zhuǎn)換......");
          ???? // 打印當(dāng)前目錄路徑
          ???? System.out.println(paths);
          ???? // 打印doc文件名
          ???? System.out.println(filename.substring(0, (filename.length() - 4)));
          ???? ActiveXComponent app = new ActiveXComponent("Word.Application"); // 啟動(dòng)word
          ???? String docpath = paths + filename;
          ???? String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));
          ???? String inFile = docpath;
          ???? // 要轉(zhuǎn)換的word文件
          ???? String tpFile = htmlpath;
          ???? // HTML文件
          ???? boolean flag = false;
          ???? try {
          ????? app.setProperty("Visible", new Variant(false));
          ????? // 設(shè)置word不可見
          ????? Dispatch docs = app.getProperty("Documents").toDispatch();
          ????? Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] {inFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
          ????? // 打開word文件
          ????? Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { tpFile, new Variant(8) }, new int[1]);
          ????? // 作為html格式保存到臨時(shí)文件
          ????? Variant f = new Variant(false);
          ????? Dispatch.call(doc, "Close", f);
          ????? flag = true;
          ???? } catch (Exception e) {
          ????? e.printStackTrace();
          ???? } finally {
          ????? app.invoke("Quit", new Variant[] {});
          ???? }
          ???? System.out.println("轉(zhuǎn)化完畢!");
          ??? }
          ?? } else {
          ??? pathss = paths;
          ??? // 進(jìn)入下一級(jí)目錄
          ??? pathss = pathss + lists[i].getName() + "\\";
          ??? // 遞歸遍歷所有目錄
          ??? change(pathss, savepaths);
          ?? }
          ? }
          ?}
          ?public static void main(String[] args) {
          ? String paths = new String("e:\\english\\ebook\\");
          ? String savepaths = new String("e:\\english\\ebook\\");
          ? change(paths, savepaths);
          ?}
          }
          運(yùn)行后出現(xiàn)的錯(cuò)誤為:
          com.jacob.com.ComFailException: A COM exception has been encountered:
          At Invoke of: Documents
          Description: An unknown COM error has occured.
          ?at com.jacob.com.Dispatch.invokev(Native Method)
          ?at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)
          ?at one.WordtoHtml.change(WordtoHtml.java:25)
          ?at one.WordtoHtml.main(WordtoHtml.java:39)
          Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
          At Invoke of: Quit
          Description: An unknown COM error has occured.
          ?at com.jacob.com.Dispatch.invokev(Native Method)
          ?at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)
          ?at one.WordtoHtml.change(WordtoHtml.java:35)
          ?at one.WordtoHtml.main(WordtoHtml.java:39)


          附加:下面是總結(jié)了的錯(cuò)誤!
          1、如果出現(xiàn)下面的錯(cuò)誤
          com.jacob.com.ComFailException: A COM exception has been encountered:
          At Invoke of: Version
          Description: An unknown COM error has occured.
          表示dll的版本不對,換成最新版本即可。
          2、如果出現(xiàn)下面的錯(cuò)誤
          no jacob in java.library.path
          java.lang.UnsatisfiedLinkError: no jacob in java.library.path
          表示把dll放到path下即可,設(shè)置path或是放到window/system32下

          posted on 2008-03-29 02:16 EricWong 閱讀(4796) 評(píng)論(6)  編輯  收藏 所屬分類: Java

          評(píng)論:
          # re: jacob問題-大家?guī)臀铱纯?先謝過! 2008-03-29 09:56 | like
          最近也遇到這個(gè)問題  回復(fù)  更多評(píng)論
            
          # re: jacob問題-大家?guī)臀铱纯?先謝過![未登錄] 2008-05-07 13:51 | Michael
          我今天也遇到了這個(gè)問題,正在郁悶
          At Invoke of: Documents  回復(fù)  更多評(píng)論
            
          # re: jacob問題-大家?guī)臀铱纯?先謝過! 2008-07-17 12:30 | lili
          謝謝,借鑒一下!  回復(fù)  更多評(píng)論
            
          # re: jacob問題-大家?guī)臀铱纯?先謝過! 2008-10-18 10:54 | yu
          我下的就是1.7,可是還報(bào)那個(gè)錯(cuò)誤
          "A COM exception has been encountered"

          why???
          困惑中ing...  回復(fù)  更多評(píng)論
            
          # re: jacob問題-大家?guī)臀铱纯?先謝過![未登錄] 2009-02-04 08:51 | ice
          "A COM exception has been encountered"

          能否給個(gè)最新的jacob.dll
          bingniao@163.com 多謝~!  回復(fù)  更多評(píng)論
            
          # re: jacob問題-大家?guī)臀铱纯?先謝過! 2009-06-17 13:29 | jhx
          遇到了第一種錯(cuò)誤,能否給個(gè)最新的jacob.dll   回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 阿勒泰市| 广宗县| 岢岚县| 花垣县| 舞钢市| 突泉县| 竹溪县| 江华| 中宁县| 平遥县| 定兴县| 色达县| 永仁县| 神池县| 吴江市| 武夷山市| 天长市| 修武县| 夏河县| 资阳市| 鹿邑县| 阜宁县| 府谷县| 灵川县| 汾西县| 修文县| 农安县| 玛纳斯县| 金堂县| 磴口县| 永兴县| 宜川县| 秀山| 海宁市| 海口市| 楚雄市| 闵行区| 二连浩特市| 台中市| 黎城县| 永和县|