亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用JAVA語言深度控制Word

2019-11-18 11:54:53
字體:
來源:轉載
供稿:網友

java 控制Office 控件是非常麻煩的一件事情。
  自從有了JACOB后,事情變得簡單多了。
  但是要實現Java靈活的控制Word還是一件非常麻煩的事情。
  
  下面介紹幾個WORD常見的對象以及一些典型的處理過程,希望對大家有幫助。
  (請注重:JDK1.3.2運行 Jacob比較正常,JDK1.4有問題)
  /** WORD對象*/
  PRivate ActiveXComponent word = null;
  /** 文檔對象*/
private Dispatch documents = null;
/** selection 對象是比較重要的一個對象 */
  private Dispatch vSelection = null;
  /** 一個WORD文檔 */
  private Dispatch wordfile = null;
1,初始化
    word = new ActiveXComponent("Word.application");
    documents = word.getProperty("Documents").toDispatch();
    (將JACOB 放在 WINNT/system32/ 下比較簡單省事)
2,打開文件
      wordfile = Dispatch.invoke(
        documents,
        "Open",
        Dispatch.Method,
          new Object[] {
strFileName,
new Variant(true),//是否進行轉換 ConfirmConversions
            new Variant(false)//是否只讀
}, new int[1]).toDispatch();
vSelection = word.getProperty("Selection").toDispatch();
在WORD中,選定內容進行轉換時,不用象Java對象一樣往返的重新取,這個對象一直有效。
3,顯示WORD
    word.setProperty("Visible", new Variant(visible));
4,設置WORD的位置
    Dispatch activeWindow = Dispatch.get(word, "Application").toDispatch();
    Dispatch.put(activeWindow, "WindowState", new Variant(0));
    Dispatch.put(activeWindow, "Top", new Variant(0));
    Dispatch.put(activeWindow, "Left", new Variant(0));
    Dispatch.put(activeWindow, "Height", new Variant(600));
    Dispatch.put(activeWindow, "width", new Variant(800));

進行將JAVA內的數據和WORD交換,常用的做法是,在WORD上作一些非凡的標記,利用 FIND 和 Replace的方法進行,這個方法不是太好。
個人覺得使用超鏈接的模式比較方便。
有幾大優點:
1,  Hyperlink 有3個區域可以讓開發者自己利用
ActiveDocument.Hyperlinks.Add
Anchor:=Selection.Range,
Address:="位置", //地址(可以利用) 有個缺點
SubAddress:="",//子位置(可以利用)
ScreenTTextToDisplay:="顯示內容"http://最好利用的東西

個人建議使用TextToDisplay。
Address 會在保存時被替換成絕對路徑。
比如你錄入一個
“AA.BB.CC”
保存時可能會被替換成
C:/Documents and Settings/Administrator /My Documents/AA.BB.CC
2,  可以進行自動定位
利用Hyperlinks 可以將文章中所有的超鏈接得到。
也可以將指定范圍的超鏈接得到。
3,  可以自由排版
4,  可以拷貝粘貼

添加超鏈接:
  Dispatch Hyperlinks = Dispatch.get(wordfile, "Hyperlinks").toDispatch();
  Dispatch range = Dispatch.get(vSelection, "Range").toDispatch();
  Dispatch h=Dispatch.invoke(Hyperlinks,
"Add", Dispatch.Method, new Object[]
{ range,
        new Variant("Address"),
new Variant("SubAddress"),
new Variant("{table.fieldName}"),//建議的數據鏈接處
        new Variant("姓名") }, // 在WORD中顯示的內容
new int[4]).toDispatch();
    Dispatch hRange=Dispatch.get(h, "Range").toDispatch();
    Dispatch.call(hRange,"select");
    //設置
字體,顏色
    Dispatch font = Dispatch.get(vSelection, "Font").toDispatch();
    Dispatch.put(font,"Underline", new Variant(0));
    Dispatch.put(font,"Color", new Variant(0));
    //取消選擇
    Dispatch.call(vSelection,"MoveRight",new Variant(1),new Variant(1));

超鏈接替換內容:
1,  得到所有的超鏈接
//選擇對象
   Dispatch.call(dObject, "select");
    //得到超鏈接集合
   Dispatch Hyperlinks = Dispatch.get(vSelection,  "Hyperlinks").toDispatch();
    //得到有多少個超鏈接
   int nHyperlink = Dispatch.get(Hyperlinks, "count").toInt();
    //得到一個超鏈接
    Dispatch hyperlink=Dispatch.invoke(Hyperlinks, "item",
      Dispatch.Method, new Object[] { new Integer(i + 1)},
   new int[1]).toDispatch()));
2,  替換內容
Dispatch.put(hyperlink, "TextToDisplay", information);
3,  取消超鏈接,將超鏈接變成普通文字。
Dispatch.call(hyperlink, "delete");

如何實現批量數據自動擴展,建議使用表格進行自動擴展,方便簡單。
結合使用上面超鏈接的技術。會非常簡單:

比如有如下數據:
    
DataA
DataB

1,  列出所有表格
和列出所有超鏈接基本一樣:
private void getTables01(Dispatch objcet,Vector vTableStore) {
Dispatch tables = Dispatch.get(objcet, "tables").toDispatch();
int nTableAmount = Dispatch.get(tables, "count").toInt();
for (int i = 0; i < nTableAmount; i++) {
Dispatch table =
Dispatch
.invoke(
tables,
"item",
Dispatch.Method,
new Object[] { new Integer(i + 1)},
new int[1])
.toDispatch();
vTableStore.add(new DTable(table));
getTables01(table,vTableStore);//處理表格套用表格的情況
}
}
2,  表格的可以控制的對象
    Dispatch dRows = Dispatch.get(dTable, "rows").toDispatch();//所有行
    int nRows = Dispatch.get(dRows, "count").toInt();
3,  取得一行的內容
  Dispatch dRow =
    Dispatch
      .invoke(
        rows,
        "item",
        Dispatch.Method,
        new Object[] { new Integer(row + 1)},
        new int[1])
      .toDispatch();
       return dRow;
  }catch(ComFailException cfe)
  {
    /** 帶有合并行的情況*/
    return null;
  }
4,  得到一行的超鏈接
DHyperlink dhInRow[] = listHyperlinks(dRow);
5,  將某一行拷貝很多次
    Dispatch.call(dRow, "select");
    Dispatch.call(vSelection, "Copy");
    int nCopyNow = nDataBlockRow - 1;
    for (int nCopys = 0; nCopys < nCopyNow; nCopys++) {
   try   {
Dispatch.call(vSelection, "Paste");
   }catch(Exception e)   {   e.printStackTrace();
     //有時候文檔損壞,可以忽略本問題,實際上已經粘貼上了  
   }
    }
6,  替換內容,讀到這里就不用介紹了。

打印預覽:
Dispatch.call(wordfile,"PrintPreView");

其他的功能發掘
  利用WORD的宏錄制,以及VB編輯器,輔助功能,都能發掘出來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美老妇交乱视频| 国产精品福利小视频| 欧美—级高清免费播放| 成人精品福利视频| 久久久久国产精品免费网站| 国产一区二区三区18| 亚洲精品综合久久中文字幕| 懂色aⅴ精品一区二区三区蜜月| 国产va免费精品高清在线观看| 国产精品久久久久久久久久东京| 91九色国产视频| 热re91久久精品国99热蜜臀| 九九久久精品一区| 欧美二区乱c黑人| 欧美丝袜第一区| 国产一区玩具在线观看| 性色av一区二区三区红粉影视| 亚洲久久久久久久久久| 久久久久久免费精品| 这里只有精品丝袜| 亚洲精品在线观看www| 欧美日韩日本国产| 欧美日韩亚洲精品一区二区三区| 国产香蕉97碰碰久久人人| 亚洲伊人久久综合| 国产精品久久久久久婷婷天堂| 亚洲奶大毛多的老太婆| 国内精品久久久| 国产精品日韩久久久久| 91影视免费在线观看| 亚洲一级片在线看| 日韩综合中文字幕| 亚洲欧美精品伊人久久| 亚洲国产成人91精品| 欧美午夜精品久久久久久浪潮| 国模叶桐国产精品一区| 欧美激情一区二区三级高清视频| 欧美精品xxx| 欧美成人黄色小视频| 亚洲精品一区二区三区不| 亚洲曰本av电影| 欧美丝袜一区二区三区| 国产精品亚洲片夜色在线| 亚洲成色777777女色窝| 亚洲美女视频网| 国产成人一区二区三区电影| 国产日韩精品在线观看| 国模视频一区二区| 米奇精品一区二区三区在线观看| 国产精品嫩草视频| 亚洲国产精品大全| 亚洲精品乱码久久久久久金桔影视| 亚洲一区二区中文字幕| 国产成人啪精品视频免费网| 草民午夜欧美限制a级福利片| 亚洲午夜精品久久久久久久久久久久| 91久久在线视频| 中文字幕在线日韩| 久久网福利资源网站| 51色欧美片视频在线观看| 亚洲偷熟乱区亚洲香蕉av| 欧美精品在线观看| 成人h视频在线观看播放| 欧美老少做受xxxx高潮| 亚洲美女性生活视频| 亚洲成人xxx| 久久久亚洲精品视频| 91色琪琪电影亚洲精品久久| 亚洲激情在线观看| 成人欧美一区二区三区黑人孕妇| 日本精品久久中文字幕佐佐木| 欧美日本高清一区| 国产精品中文字幕久久久| 亚洲欧美色婷婷| 自拍偷拍亚洲一区| 国产在线拍揄自揄视频不卡99| 国产一区二中文字幕在线看| 中文字幕国产精品| 亚洲天堂网站在线观看视频| 在线精品视频视频中文字幕| 亚洲自拍小视频| 国产精品女视频| 亚洲国产中文字幕久久网| 欧美成人久久久| 日韩电影在线观看免费| 欧美资源在线观看| 亚洲最大成人在线| 色偷偷综合社区| 亚洲国产欧美一区| 精品国内产的精品视频在线观看| 久久成人一区二区| 亚洲黄色免费三级| 亚洲国产成人久久综合| 欧美激情在线狂野欧美精品| 亚洲美女av在线| 国产成人久久久精品一区| 亚洲女在线观看| 九九热精品视频在线播放| 亚洲最大av网| 91国产中文字幕| 97精品视频在线播放| 俺去啦;欧美日韩| 久久久亚洲国产天美传媒修理工| 26uuu亚洲国产精品| 国产亚洲综合久久| 最新中文字幕亚洲| 成人高h视频在线| 欧美一级视频一区二区| 欧美性极品xxxx做受| 久久夜色精品国产亚洲aⅴ| 精品国产一区久久久| 久久综合电影一区| 欧美精品中文字幕一区| 精品国产成人av| 国产成人精品国内自产拍免费看| 91av视频在线观看| 亚洲色图25p| 国产精品第七十二页| 91tv亚洲精品香蕉国产一区7ujn| 精品国产视频在线| 97视频在线观看免费高清完整版在线观看| 精品国产自在精品国产浪潮| 欧美最顶级丰满的aⅴ艳星| 精品色蜜蜜精品视频在线观看| 精品久久久久久久久久久久| 国产精品第一页在线| 国产成人久久久精品一区| 欧美激情2020午夜免费观看| 尤物yw午夜国产精品视频| 日韩av一区二区在线| 亚洲第一网站男人都懂| 久久人人爽人人爽人人片av高清| 在线视频一区二区| 在线视频日韩精品| 久久精品最新地址| 97在线视频精品| 久久久久久久色| …久久精品99久久香蕉国产| 久久在线免费观看视频| 国产精品观看在线亚洲人成网| 国产亚洲欧美日韩一区二区| 精品免费在线观看| 国产精品三级美女白浆呻吟| 国产精品久久久久9999| 亚洲片国产一区一级在线观看| 国产在线一区二区三区| 国产精品老女人精品视频| 成人在线激情视频| 国内精品国产三级国产在线专| 日韩av一区二区在线观看| 日韩欧美精品中文字幕| 欧美超级乱淫片喷水| 色播久久人人爽人人爽人人片视av| 欧美日韩在线第一页| 69av视频在线播放| 亚洲国产一区二区三区四区| 欧美精品九九久久| 成人信息集中地欧美| 欧美高跟鞋交xxxxxhd| 欧美理论电影网| 菠萝蜜影院一区二区免费| 欧美精品18videosex性欧美| 久久精品电影网站| 欧美精品日韩www.p站|