隨筆 - 303  文章 - 883  trackbacks - 0
          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網站

          搜索

          •  

          最新評論

          大家好!我是小尋

                       如果你想寫一個JAVA代碼,其中需要調用JACOB提供的功能,而你還是新手,也許篇文章會大大降低你的花費時間。

                       我將一個關于JACOB的代碼分成下面幾個步驟:

                      1) ActiveXComponent ax = new ActiveXComponent("a1");//構建ActiveX組件實例

                     其中的a1的值和你需要調用的ActiveX控件有關

          MS控件名

          a1的值

          InternetExplorer

          InternetExplorer.Application

          Excel

          Excel.Application

          Word

          Word.Application

          Powerpoint

          Powerpoint.Application

          vb/java Script

          ScriptControl

          windows media Player

          WMPlayer.OCX

          Outlook

          Outlook.Application

          Visio

          Visio.Application

          DAO

          DAO.PrivateDBEngine.35

          MultiFace

          MultiFace.Face


                           2) Dispatch ds = ax.getObject(). toDispatch();//獲取Dispatch對象,我們可以把每個Dispatch對象看成是對Activex控件的一個操作,這一步是獲得該ActiveX控件的控制權。
                           (注:淺析JACOB 中提到過Variant類,這里的ax.getObject()便是獲得該對象,我們將其轉化為任何對象(類型))
                   
                           3) Dispatch ds1 = Dispatch.get(ds, "a2").toDispatch(); //獲取該ActiveX對象數據結構中的a2屬性
             
                           4) Dispatch d2 = Dispatch.invoke(ds1, "a3", a4, a5, a6).toDispatch(); //功能調用,對ActiveX對象ds1的a3屬性執行a4(Dispatch.Put\Dispatch.Get等)操作,執行后a3的值為a5,a6為錯誤參數碼常定義為new int[1],
                            (注:call、get和put方法都是通過該方法實現的)
                              
                           5) Dispatch ds2 = Dispatch.put(ds, "a7","a8").toDispatch();//將ActiveX對象ds的屬性a4的值設置為a5,該方法返回類型同get一樣

                           6) Dispatch ds3 = Dispatch.call(ds1, "a9", a10);//該方法和get方法非常類似,他是把a9屬性賦值給a10

                           Ok其他的方法我覺得很容易理解,這里就不再做描述了。
                           
                            下面是一個關于excel的代碼,也許對您的進一步自學,會有好處
                           

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

          public class ExcelDispatchTest {

              
          public static void main(String[] args) {
                  ComThread.InitSTA();

                  ActiveXComponent xl 
          = new ActiveXComponent("Excel.Application");
                  
          try {
                      System.out.println(
          "version=" + xl.getProperty("Version"));
                      System.out.println(
          "version=" + Dispatch.get(xl, "Version"));
                      Dispatch.put(xl, 
          "Visible"new Variant(true));
                      Dispatch workbooks 
          = xl.getProperty("Workbooks").toDispatch();
                      Dispatch workbook 
          = Dispatch.get(workbooks, "Add").toDispatch();
                      Dispatch sheet 
          = Dispatch.get(workbook, "ActiveSheet").toDispatch();
                      Dispatch a1 
          = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                              
          new Object[] "A1" }new int[1]).toDispatch();
                      Dispatch a2 
          = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                              
          new Object[] "A2" }new int[1]).toDispatch();
                      Dispatch.put(a1, 
          "Value""123.456");
                      Dispatch.put(a2, 
          "Formula""=A1*2");
                      System.out.println(
          "a1 from excel:" + Dispatch.get(a1, "Value"));
                      System.out.println(
          "a2 from excel:" + Dispatch.get(a2, "Value"));
                      Variant f 
          = new Variant(false);
                      Dispatch.call(workbook, 
          "Close", f);
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }
           finally {
                      xl.invoke(
          "Quit"new Variant[] {});
                      ComThread.Release();
                  }

              }


          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2008-11-23 11:30 小尋 閱讀(2533) 評論(0)  編輯  收藏 所屬分類: c/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...
          主站蜘蛛池模板: 宁陕县| 三门峡市| 鹿邑县| 台湾省| 乌恰县| 吴旗县| 岑溪市| 鸡西市| 云南省| 盘山县| 方城县| 察隅县| 临武县| 汽车| 平舆县| 镇平县| 鄢陵县| 沐川县| 梁山县| 汝阳县| 滦平县| 抚州市| 沂水县| 调兵山市| 富顺县| 无为县| 抚远县| 阿拉善盟| 合江县| 鸡东县| 元阳县| 紫金县| 厦门市| 东城区| 武鸣县| 独山县| 云安县| 昌黎县| 友谊县| 英德市| 泸定县|