1一152期六合图库资料
隨筆 - 303  文章 - 883  trackbacks - 0
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

歡迎光臨! 
閑聊 QQ:1074961813

隨筆分類(357)

我管理的群

公共blog

參與管理的論壇

好友的blog

我的其他blog

朋友的網站

搜索

  •  

最新評論

大家好啊! 我是尋覓       

 最近天氣變化多,大家要多注意身體啊~~~
 
好了進如正題,最近在幫個朋友做java調用office的東東,花了些時間,終于搞定了
由于問題多多,現在把過程和大家分享:

首先,大家先要了解一下jacob ,官方的解釋是Java COM Bridge,即java和
com組件間的橋梁(進一步了解com/dcom: http://docs.huihoo.com/com/
com一般表現為dll或exe等二進制文件,像我們呆會會用到的jacob.dll文件
這里說說為什么我們用java去操縱office(如:word)要使用com,而不直接
使用java去做?
首先,我們清楚office是建立在windows平臺之上的,本身是一個軟件,除了
他自己提供的宏似乎沒有什么能對他進行直接的操作;在windows平臺上為了
解決像這樣的不同應用軟件,通信缺乏通用api問題,推出了com的解決方案;
我們使用dll中的一組或多組相關的函數存取組件數據,總的合稱為接口
具體到每個細節的實現稱為方法;如果我們要調用接口里的方法,唯一的途徑就是
調用指向接口的指針;
   所以總的來說使用就是dll完成api的轉換;
如果你聽不懂,則稱為廢話(不懂沒關系,會用就好,用久自然懂了);
開玩笑,呵呵
好了com講完,我們開始我們的主要內容吧!

大家先下載這里  
jacob_1.9.zip
里面的jacob.jar是我們要用的包
           
jacob.dll就是我前面說的com組件
把包里的jacob.dll放到c:/windows/system32下
講解麻煩,畫個圖大家看 好

jacob.png

值得注意的是,不同的版本的系統使用不同的dll文件
所以如果你編譯成功,但運行失敗一般是dll文件問題
遇到這種情況,可以到
http://downloads.sourceforge.net/jacob-project/jacob_1.9.zip?modtime=1109437002&big_mirror=0

下載其他的版本的 dll 文件。
先給大家個word的測試代碼(經過更改該代碼在我的機器上運行正常)
以后有會找時間,推出其他的office代碼


 
import  com.jacob.activeX.ActiveXComponent;
import  com.jacob.com.ComException;
import  com.jacob.com.Dispatch;
import  com.jacob.com.Variant;

public   class  WordDocumentProperties  {
    
// 聲明一個word對象
     private  ActiveXComponent objWord;

    
// 聲明四個word組件
     private  Dispatch custDocprops;

    
private  Dispatch builtInDocProps;

  

    
private  Dispatch document;

    
private  Dispatch wordObject;

   
    
public  WordDocumentProperties() {
    }


    
/**
     * 打開word文擋
     
*/

    
public   void  open(String filename)  {
        
// 創建一個word對象
        objWord  =   new  ActiveXComponent( " Word.Application " );

        
// 為wordobject組件附值
       wordObject  =  (Dispatch)(objWord.getObject());            // 改了這里

        
// 生成一個只讀方式的word文擋組件
        Dispatch.put(wordObject,  " Visible " new  Variant( false ));

        
// 獲取文擋屬性
        Dispatch documents  =  objWord.getProperty( " Documents " ).toDispatch();

        
// 打開激活文擋
        document  =  Dispatch.call(documents,  " Open " , filename).toDispatch();
    }


   
    
public   void  selectCustomDocumentProperitiesMode()  {
        
        custDocprops 
=  Dispatch.get(document,  " CustomDocumentProperties " )
                .toDispatch();
    }


   
    
public   void  selectBuiltinPropertiesMode()  {
        
        builtInDocProps 
=  Dispatch.get(document,  " BuiltInDocumentProperties " )
                .toDispatch();
    }


    
/**
     * 關閉文擋  
     
*/

    
public   void  close()  {
        
        Dispatch.call(document, 
" Close " );
    }


   
    
public  String getCustomProperty(String cusPropName)  {
        
try   {
            cusPropName 
=  Dispatch.call((Dispatch) custDocprops,  " Item " ,
                    cusPropName).toString();
        }
  catch  (ComException e)  {
          
            cusPropName 
=   null ;
        }


        
return  cusPropName;
    }


    
public  String getBuiltInProperty(String builtInPropName)  {
        
try   {
            builtInPropName 
=  Dispatch.call((Dispatch) builtInDocProps,  " Item " ,
                    builtInPropName).toString();
        }
  catch  (ComException e)  {
           
            builtInPropName 
=   null ;
        }


        
return  builtInPropName;
    }


  
    
public   static   void  main(String[] args)  {
        
try   {
        
            WordDocumentProperties jacTest 
=   new  WordDocumentProperties();

          
            jacTest.open(
" s.doc " );

            
            jacTest.selectCustomDocumentProperitiesMode();

            
            jacTest.selectBuiltinPropertiesMode();

            
            String custValue 
=  jacTest.getCustomProperty( " Information Source " );

            
            String builtInValue 
=  jacTest.getBuiltInProperty( " Author " );

             
            jacTest.close();

            
            System.out.println(
" Document Val One:  "   +  custValue);
            System.out.println(
" Document Author:  "   +  builtInValue);

        }
  catch  (Exception e)  {
           System.out.println(e);
       }

    }

}


 



地震讓大伙知道:居安思危,才是生存之道。
posted on 2007-03-27 19:06 小尋 閱讀(49447) 評論(90)  編輯  收藏 所屬分類: j2se/j2ee/j2mec/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...

FeedBack:
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-04-02 22:27 皿里
牛呀,這個倒沒接觸過,有需要的時候再來借鑒。  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-08-21 08:01  小倪
你好:
看了你的文章后,感覺挺好的,希望你能把在此過程中所遇到的問題也一起寫出來,供大家參考,我最近就遇到了jacob.dll文件重復加載和資源文件的路徑不對的問題,但是還沒有找到原因,希望你能幫我解答一下。謝謝  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-08-22 00:05 幻想[email protected]@~
呵呵,對不起!
這個問題很早之前的了,這些信息當時我也沒保留下來
可以留下你的報錯信息,
我給你解下吧!


 

  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-08-31 16:48 冷云
我運行程序報錯啊,錯誤是
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.5.0_04\jre\bin\jacob.dll: ??????ó??ò???ò????????ó??òδ???????????°????ó??ò????~??????????
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1668)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:57)
at com.jacob.com.JacobObject.<clinit>(JacobObject.java:150)
at xhk.jacob.test.WordDocumentProperties.open(WordDocumentProperties.java:33)
at xhk.jacob.test.WordDocumentProperties.main(WordDocumentProperties.java:109)
能幫我看看這是什么錯啊   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-08-31 16:54 冷云
我的 JDK是 1.5的,jacob是1.13的  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-09-04 01:26 幻想[email protected]@~
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.5.0_04\jre\bin\jacob.dll
你把你的dll放到bin下但是程序報了錯,說你的dll不合適
(當然你可以把他放到c:\windows\system32下,該目錄放置了
 大部分系統的dll,且默認被設置在系統變量里,放進去就可以直接使用)

原因是 jacob.dll  需要通過jni和你的程序交互,但是你的dll并不適合
所以,你大可以找其他版本的jaco.jar和jacob.dll進行配對相信總有
一個可以的;

如果還是不成功,你也可以寫一個jni程序,具體介紹
我這里有點文章;你可以找找看。
簡單的說,jni 就是java native interface 負責java和系統函數打交道,具體就是提供java到C的數據類型的轉換。又一個jni.h文件負責,
具體位置 jdk\include\jni.h

除了我blog上的文章之外,你可以到網上找找“傳智博客”提供的三集jni視頻
謝謝你的支持!祝你成功
  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-09-10 18:17 admin
這不就是本身的例子嗎 還說是你做的 呵呵 真行  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2007-09-11 10:20 幻想[email protected]@~
難道你一開始寫的代碼不是照例子寫的嗎?牛人~~
眼睛 => "http:// 改了這里"   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2007-11-28 09:37 jim
樓主用的是什么版本的jacob、jdk、word,我試的都不行
我的jdk1.6、word2003能用jacob嗎  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2007-11-28 20:50 尋覓
可以的
你可以用
jacob_1.9_src.zip\jacob_1.9\samples\
下代碼進行的測試
只要環境配置(classpath)正確,一般是不成問題。
如果出問題,那可能是系統問題了!  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-01-11 11:30 
請問一下,有人知道jacob可以在linux下使用么
  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-01-14 21:32 

jacob只適用于windows平臺,  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-01-15 00:35 幻想[email protected]@~
首先,linux下沒有Microsoft offices 但是有Open offices
其次,jacob使用的dll ,linux下沒 dll
最后,如果能力上沒問題 可以自己開發一套java控制Open office的**.o或**.so
當然如果你能想到更簡單的方法或找到其他的開源包那是最好啦  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-01-15 00:42 幻想[email protected]@~
JOOConverter是一個開源Java/OpenOffice文檔轉換器
http://jooreports.sourceforge.net/
也許這個正是你需要的  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-04-01 15:19 lf
com.jacob.com.ComFailException:Can't get object clsid from progid出現一個這樣的錯誤!  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-04-11 15:41 qweqwe
@lf
咱倆錯誤一樣
  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-04-17 10:13 郁林
樓主好:)
我是java菜鳥,問下你com.jacob.com.ComFailException: Can't get object clsid from progid

這個錯誤是怎么回事

--------------------------------------------------
謝謝!  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-04-23 13:57 ww
@郁林
use regsvr32 to register the DLL..  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-04-23 15:42 呆子甲
com.jacob.com.ComFailException: Can't get object clsid from progid
這個問題我也出了,不過已經解決。

原因是,從網頁上拷貝下來的代碼,引號里的字符串兩端多出了倆空格,刪掉就可以了。否則的話它找不到相應的com id,也就是那個Application   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-04-23 15:44 呆子甲
如果按照樓主說的把dll放在system32下的話,是不需要注冊它的,不需要這一句use regsvr32 to register the DLL..   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-05-03 19:47 王春生
我運行報錯
com.jacob.com.ComFailException: Invoke of: open
Source: Microsoft Word
Description:   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-05-16 15:25 sfds
com.jacob.com.ComFailException: Can't map name to dispid: Visible   回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-05-17 21:21 尋覓
可能是版本不匹配造成的,試試更換Jdk、Jacob版本  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-07-27 16:39 xiaolu
不錯,不錯。支持一下。  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-07-30 17:21 酸棗—JAVA
這幾天我也在做這個,功能是實現了,在調用模板路徑的時候路徑是固定情況就可以,如果模板路徑不是固定的,而是用方法得到,就會報這個錯:
jacob.com.ComFailException: Invoke of: Open
  回復  更多評論
  
# re: jacob??????????????? ~~~~~~~~~~~ ?????? 2008-08-13 17:53 [email protected]
Can't get object clsid from progid??????????????????????????????????????õ?????XP??????????????????????ã?????????2003????????JDK???????????????????????????й??????????dll??jar??????????У?
  回復  更多評論
  
# re: jacob??????????????? ~~~~~~~~~~~ ?????? 2008-08-13 17:57 [email protected]
Can't get object clsid from progid,我的也出現了這個報錯,我在筆記本上是好的,但移動服務器上就不行了,唯一的區別就是一個裝的XP,另一個是2003,其它的什么JDK,tomcat等都是一樣的,我換了一個dll和相應的jar都不行,是不是還與操作系統有關,或是2003下面不能用  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-08-18 09:26 nathan.he
@eydp@163.com

我也遇到同樣問題,xp下正常使用,2003就不能用了,急救。。。。有沒有誰知道原因?  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-08-18 11:30 nathan.he
2003系統下如果報錯
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jacob-1.14-x86.dll: 由于應用程序配置不正確,應用程序未能啟動。重新安裝應用程序可能會糾正這個問題。
請安裝Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)吧,
地址如下
http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en


  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-08-22 16:27 Nihao
樓主,有沒有什么jacob的學習資料(除了它自帶的那些)  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-01 09:38 [email protected]
朋友您好 我最近在用這個的時候很不穩定 連續處理10個文件總是有兩三個中途出異常,都是些不可處理的異常 例如Can't map name to dispid: Text
Can't map name to dispid: Forward Can't map name to dispid: Find 特別是當出現Can't map name to dispid: Close 和Can't map name to dispid: Quit 的話文件就沒辦法關閉了 winword.exe進程會越來越多,最終耗盡內存 我想問一下您是否遇見過此類問題 這是程序本身不健壯還是我用的版本和jdk不兼容造成的  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-04 13:03 小尋

大家在做測試的時候,一定要按照步驟,一步一步完成,不能少了哪一步,比如不能少了打印機的設置。

  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-14 17:32 jacky
您好,最近我用了jacob,遇見了把服務器當掉的問題。報的異常您看一下。能幫一下我嗎? 非常感謝!!!
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x3B8C4AD
Function=Java_com_jacob_com_DispatchProxy_release+0x267D
Library=D:\AppServer\Tomcat6JDK6-8008\j2sdk1.4.2_06\bin\jacob.dll

Current Java thread:
at com.jacob.com.Variant.init(Native Method)
at com.jacob.com.Variant.<init>(Variant.java:216)
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:384)
at com.jacob.com.Dispatch.get(Dispatch.java:512)
at com.heavenlake.wordapi.Document.getBookmark(Document.java:86)
at com.heavenlake.wordapi.Document.insertAtBookmark(Document.java:178)
at com.heavenlake.wordapi.Document.insertAtBookmark(Document.java:194)
at com.jcst.word.BuildWordByConfigSubClass.buildWordByXML(BuildWordByConfigSubClass.java:183)
at org.apache.jsp._1_jsp._jspService(_1_jsp.java:70)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
at java.lang.Thread.run(Thread.java:534)

Dynamic libraries:
0x00400000 - 0x0040B000 D:\AppServer\Tomcat6JDK6-8008\j2sdk1.4.2_06\bin\java.exe
0x7C930000 - 0x7CA00000 C:\WINDOWS\system32\ntdll.dll
。。。。。。。。。。。。。。
Local Time = Wed Nov 12 09:42:12 2008
Elapsed Time = 1738
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2_06-b03 mixed mode)
#


  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-14 21:28 小尋
請說清楚你用的什么服務器,環境如何(OS? JDK? JVM? WEBserver?)  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-15 11:52 Jacky
WEB服務器是TOMCAT5.0,JDK是1.4的.系統是WIN2003.
很郁悶的問題.這種情況一般是一天出現一次,服務器就趴掉了.
網上找了好久,也沒找到解決辦法。  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-15 11:57 Jacky
開始在一臺雙核,4G內存的服務機上,打開WORD需要30+秒,一天服務器要趴好幾次,都是報的這個異常.
實在沒辦法,轉移到另一臺機器上,動態出WORD是正常了,大概4~5秒的時間,不過還是會報這個異常,就是一天基本一次了。
實在郁悶...
  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-16 00:43 小尋
根據您提供的各種信息(異常和環境),我個人認為問題應該出在軟件環境上,您可以檢查一下JVM、JACOB、NT版本是否匹配?希望我的分析對您解決該問題能起到參考作用。  回復  更多評論
  
# re: jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-16 10:23 Jacky
恩,我也估計是JACOB的版本問題.我估計是JACOB.JAR與JACOB.DLL兩個不匹配的問題。   回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-24 23:03 銀河使者
jacob還沒用過,沒使用過java調用com,一般調用com就使用delphi、c#或c++了。有空研究一下jacob。不過個人認為,com是windows特有的,如果想調用com,可以使用windows下的語言或工具,如delphi,c#都是很好的選擇。最喜歡delphi,不會出現這樣那樣的兼容問題。當然,用vb6也很好。調用com并不是java的長項。如果非要使用java,那就只好用象jacob一樣的庫了。
不過還是支持樓主的文章!!!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-24 23:03 銀河使者
估計jacob也是用jni做個dll,調的。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-24 23:06 銀河使者
@郁林
com組件需要一個id來引用,這個錯誤是com組件的id錯了,或根本沒有這個組件。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-24 23:08 銀河使者
@幻想~@@~
openoffice有自己的jdk,可以研究一下,不錯,很好很強大。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2008-11-24 23:12 銀河使者
個人感覺如果只是創建com組件,并調用其中的方法或屬性并不十分復雜,可以使用Jni技術用c++或delphi實現一個(返正做這個dll很簡單,以前用delphi做過很多這種東西),并在java中提供接口。 不知道jacob有沒有其他的功能?  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2008-11-27 21:59 小尋
@銀河使者
JACOB 確實是使用jni 來實現的
http://www.qpkxbc.shop/lusm/archive/2008/11/22/JACOB.html  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-06 15:50 大起大落
你好,我在使用jacob中也出現了服務器down的現象,主要是如果是一個人來報數據的時候,jacob解析word是正常的,可是如果為多個人同是上報word數據時,服務器就down了。我的QQ是155192670,如果方便的話,請把我加入來指導我吧!在一次感謝!

  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2009-02-07 10:41 小尋
@大起大落
您好!據上所說,小弟做了如下分析:
當多個用戶訪問(讀取,寫入)同個文件(或數據庫)的時候,我們稱之為并發訪問(操作)。再這種情況下,若沒有相應的措施,就必然產生沖突(這在種操作系統里也經常看到),一般的web服務器(tomcat 等),都有對這種情況做了處理,通過各種措施,保證多用戶可以正常進行。
我的建議是:如果你沒有使用相應的服務器,你可以做如下處理:當多個用戶對office文件做合法的寫(保存)操作時,可以對除第一個(或高優先級的)用戶做鎖定,等第一用戶操作完成之后,再將資源分配給下一個用戶。
當然在軟件實現的同時,還要考慮系統問題,比如系統設置該文件是否能為多個web用戶訪問。
簡短的回答,希望能對您有所幫助。歡迎QQ聯系交流^_^。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-09 14:40 大起大落
謝謝小尋的回復,你提出的解決方法是正確的。是因為并發問題導致了服務器的down機。關于對用戶加鎖的方式我也試過,沒有發生錯誤。但是這樣做就不能滿足用戶的需求了。現在把jacob更新到1.14版本后,就沒有并發的問題了,但是又出現的winword.exe不能正確關閉的問題。我現在不知道您的QQ號是多少,我的是155192670,如果方便,請加入我,咱們QQ上交流。謝謝  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-09 16:13 大起大落
尋覓,您好,我在使用jacob中關閉winword.exe進程時,老是出現normal.dot提示,不知道您是否遇到此問題?我現在不知道該怎么解決,十在是郁悶啊!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-10 10:49 大起大落
問題解決了,好苦啊!終于解決了,謝謝大家的幫助!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-26 10:09 金燈劍
11:34:30,375 ERROR [STDERR] java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\Java\jdk1.5.0_08\jre\bin\jacob.dll already loaded in another classloader

謝謝樓主了。jboss-4.0.4.GA-3.4 +winxp sp2(or win2003)+jvm1.5.0_08  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-02-28 00:11 wo dei
我沖你上面
下的1.9 怎么沒有jar包啊  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-03-03 12:11 LD
Exception in thread "main" com.jacob.com.ComFailException: Invoke of: Open
Source: Microsoft Word
Description: 您正試圖運行的函數包含有宏或需要宏語言支持的內容。而在安裝此軟件時,您(或您的管理員)選擇了不安裝宏或控件的支持功能。

at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:858)
at com.jacob.com.Dispatch.invoke(Dispatch.java:502)
at gui.WordOperBean.openDocument(WordOperBean.java:39)
at gui.WordOperBean.main(WordOperBean.java:155)

求教下這樣的問題怎么解決呢,java菜鳥,懇請幫助!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-03-03 15:54 LD
上面的問題解決了,word文檔的設置有問題,現在想請教怎么創建一個word文檔啊
Exception in thread "main" com.jacob.com.ComFailException: Invoke of: Open
Source: Microsoft Word
Description: 找不到此文件。
請試用下列方法:
* 檢查文檔名的拼寫。
* 試用另一文件名。
(C:/newWord.doc)  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2009-03-18 10:18 test
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-version not set in compilation_tools properties file-x86 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184)
at com.jacob.com.JacobObject.<clinit>(JacobObject.java:108)
at testyh.D2P.<init>(D2P.java:14)
at testyh.D2P.main(D2P.java:108)

word zhuad pdf bao de cuo wu 如何解決、  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-04-28 16:21 CQ
謝謝分享,這兩天正好在研究這東東@幻想~@@~
  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2009-05-12 17:47 LK
請問:怎么解決的  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-06-08 10:38 liubin
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.jacob.com.Variant.getVariantType()S

麻煩大家幫我看看這個是怎么回事兒  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-08-04 15:29 jana


操作錯誤,請參考原因或聯系系統管理員




--------------------------------------------------------------------------------
class class com.jacob.com.ComFailException
message Can't map name to dispid: Quit

0 com.jacob.com.Dispatch.invokev(Native Method)
1 com.jacob.com.Dispatch.invokev(Dispatch.java:858)
2 com.jacob.com.Dispatch.callN(Dispatch.java:455)
3 com.jacob.com.Dispatch.call(Dispatch.java:533)
4 it.bigatti.word8._Application.quit(_Application.java:514)
5 com.jmst.ysgzz.web.struts.action.B.WordBase.destroy(WordBase.java:129)
6 com.jmst.ysgzz.web.struts.action.B.B41.SreachBL.saveDocument(SreachBL.java:139)
7 com.jmst.ysgzz.web.struts.action.B.B01.InfoView.execute(InfoView.java:21)
8 org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
9 org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
10 org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
11 org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
12 org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
13 org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
14 org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
15 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
16 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
17 javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
18 javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
19 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
20 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
21 com.jmst.servlet.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:100)
22 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
23 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
24 com.jmst.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:102)
25 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
26 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
27 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
28 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
29 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
30 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
31 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
32 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
33 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
34 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
35 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
36 java.lang.Thread.run(Thread.java:619)

  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2009-09-04 10:49 java
請問如果該word文檔不存在,出現調用異常的時候,想創建一個word文檔,怎么做啊。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2009-09-24 16:25 OK網賺吧
www.1ok5ok.com免費網絡賺錢大集合!新手學習天地!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2009-12-11 09:07 carrie
我出現了
Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid
at com.jacob.com.Dispatch.createInstanceNative(Native Method)
at com.jacob.com.Dispatch.<init>(Dispatch.java:101)
at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
at Dispatch_MSWord.docToPDF(Dispatch_MSWord.java:148)
at Dispatch_MSWord.main(Dispatch_MSWord.java:214)
這個錯誤 仔細看了您的回帖 還是沒找到解決辦法
麻煩您幫我看看怎么回事
我是jacob-1.15-M2,jdk1.6的  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2010-04-10 22:20 mianhuatangone
hen hao wo xiang shi yong  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2010-04-10 22:22 mianhuatangone
xie xie   回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2010-04-24 16:15 zlc
有沒.net 版的啊!
  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2010-06-21 16:45 姍姍來遲
@zlc
我的是在xp下運行沒有任何問題,但是在server 2003下就Can't get object clsid from progid了,樓主有啥好的解決辦法嗎  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2010-09-09 17:26 dd
Exception in thread "main" com.jacob.com.ComFailException: Invoke of: Open
Source: Microsoft Word
Description:
我也出現了這個問題..怎么回事啊。。我用的都是jaboc是1.9的,jdk是1.6的 tomcat是6.0的 能具體說說么  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2010-11-25 14:48 
這個頁面很多地方需要去空格,比如: objWord = new ActiveXComponent( " Word.Application " );中的" Word.Application "   回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2010-12-04 11:32 啊啊
改了這里
jacTest.open("E:\\other\\00.doc");

控制臺輸出:
Document Val One: null
Document Author: ccor02

什么情況?  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-04-06 16:09 趙烽
@呆子甲
我改了不行啊  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2011-04-07 15:57 哈哈
@啊啊
我也是這種情況,我用的是最新的版本,15  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-04-11 21:02 yumei721
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 236 in the jsp file: /wool2/xiudoc_j.jsp
ActiveXComponent cannot be resolved to a type
233: {
234:
235:
236: ActiveXComponent app = new ActiveXComponent("Word.Application");
237:
238: String docpath = rootpath+list.get(i);
239: String htmlpath = rootpath+list.get(i).substring(0, (list.get(i).length() - 4));



請問這個問題該怎么解決??謝謝我是大菜鳥

  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-04-25 21:10 pc_grass
@金燈劍
你好,我現在就是遇到了這個問題:java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\Java\jdk1.5.0_08\jre\bin\jacob.dll already loaded in another classloader
請問你的問題是怎么解決的呀?能加我QQ(867298622)詳聊嗎?謝謝  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2011-05-20 17:37 王超
你好!這個貼好高!
我想請問一下我這里的問題。
jdk1.5 + jacob1.7 當執行到
workbooks = xl.getProperty("Workbooks").toDispatch();
這一句時,會報如下錯誤信息
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77c25385, pid=7120, tid=7556
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# Problematic frame:
# C [ntdll.dll+0x35385]
#
# An error report file with more information is saved as:
# D:\Workspaces\client_axis\hs_err_pid7120.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
小弟先謝謝了,qq:492833803
希望你能加上我!!!  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-11-04 16:25 唱歌
學習了 很不錯的  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-11-17 21:45 DQWang
想請問一下樓主,JDK7下能用嗎?現在的最新版本是多少啊?  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-11-18 11:59 小薰
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-12-07 14:16 陳鴻飛
樓主~我將word文檔上傳到了服務器~然后在服務器上配置好了jacob的東西~但是在客戶端調用的時候~jacob打開的是服務器的office程序~不是我機子上的office程序~我想在調用時服務器打開的是我機子上的office程序這該怎么做啊??我的是web項目~  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2011-12-12 20:29 小薰
@陳鴻飛
WEB是B/S結構是通過瀏覽器訪問服務器的,而你所要實現的時候C/S結構,這是很難實現的,因為你不可能自己制作瀏覽器,和改造OFFICE,唯一的方法,是下載到本地再打開,目前很多瀏覽器自帶的下載軟件都支持直接打開,你可以找這方面的資料,接下來可以你會遇到上傳的問題,那這個就涉及上傳的覆蓋權限,即更新(刪除和上傳)權限,這需要你服務器上做設置,再利用原有的上傳代碼上傳上去,一個比較好的做法可能是,在你的上傳代碼中加入密碼,以實現權限的訪問,這是在B/S結構中使用到的方法。 見識淺薄,提供參考。  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-02-21 10:50 333
請問如果我想使用  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-02-21 10:52 
請問如何使用jacob解析word中的選擇框呢?就是判斷選擇了第幾項!我使用了poi但是只能解析出來文字,使用jacob也是?  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2012-02-26 22:18 cc
VariantChangeType failed這個錯誤怎么解決的  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-05-23 10:04 yumen
同樣的問題啊@cc
VariantChangeType failed這個錯誤怎么解決的,是不是jni變量轉換錯誤引起的還是其他原因?  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-07-30 15:17 gc
我的服務器是windowsXP 然后我是用weblogic部署的工程
我工程里已經放入了jar包和dll文件,但為什么我訪問時還會報
java.lang.NoClassDefFoundError這個錯誤呢,日志中顯示這錯誤
是由 ActiveXComponent app = new ActiveXComponent("Word.Application"); 這句引起的。 我的服務器上需要進行什么配置嗎,我本機也沒有什么配置用tomcat測試就完全沒有問題,這是什么原因呢  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-11-06 14:49 qingbyqing
@大起大落
請問你是怎么解決的  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友[未登錄] 2012-11-29 17:12 sj
@cc
請問你解決了沒有  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2012-12-18 11:32 wuxin
怎么轉換成Pdf  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2013-03-23 17:46 hula
Exception in thread "main" com.jacob.com.ComFailException: Can't get object clsid from progid
at com.jacob.com.Dispatch.createInstanceNative(Native Method)
at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
at D2P.docToPDF(D2P.java:65)
at D2P.main(D2P.java:106)
  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2013-09-07 10:25 jzg
遇到問題:com.jacob.com.ComFailException: Can't map name to dispid: GetRecognizer
請問如何解決啊,好久了沒弄明白  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2014-10-30 16:40 andh
誰碰到過下面這種情況
將excel轉換成pdf的時候,使用了ExportAsFixedFormat方法。
在Tomcat中測試OK,
在WebSphere中測試,發生了Excel.exe進程停止不執行的問題。
奇怪的是Word就沒有問題,可以執行。
  回復  更多評論
  
# re: [原創]jacob使用入門及問題解析 ~~~~~~~~~~~ 回網友 2015-04-21 09:35 andh
關于Excel轉換成PDF出錯的問題,我最后的調查結果是遠程服務器對于Excel的權限配置問題。

使用Dcomcnfg命令,修改Excel的identity屬性,設置成This user訪問就可以結覺。

網上說這樣設置,不用用戶登陸服務器也可以訪問。
我測試了,Word可以,Excel如果不登陸還是不行,不知道什么原因。

測試環境:Office2010 64bit,Server2008 R2 64bit  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。


網站導航:
 
1一152期六合图库资料