一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java將圖片添加到Word文檔內(nèi)

 KILLKISS 2012-09-03
  1. package com.rsj.test;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileReader;  
  7. import java.io.IOException;  
  8.   
  9. import com.jacob.activeX.ActiveXComponent;  
  10. import com.jacob.com.Dispatch;  
  11. import com.jacob.com.Variant;  
  12. public class JacobWordUtil {  
  13.       
  14.     /**   
  15.      * 用于給指定的word文檔中某處字符串做替換   
  16.      * @param textPath  待替換的word文檔  
  17.      * @param targetWord   待替換的字符串  
  18.      * @param replaceWord  要替換成的字符串 
  19.      */   
  20.     public static void replaceWord(String textPath, String targetWord,     
  21.             String replaceWord) {     
  22.         ActiveXComponent app = new ActiveXComponent("Word.Application");// 啟動word  
  23.         try {     
  24.             app.setProperty("Visible"new Variant(false));// 設置word不可見  
  25.     
  26.             Dispatch docs = app.getProperty("Documents").toDispatch();     
  27.     
  28.             Dispatch doc = Dispatch.invoke(     
  29.                     docs,     
  30.                     "Open",     
  31.                     Dispatch.Method,     
  32.                     new Object[] { textPath, new Variant(false),     
  33.                             new Variant(false) }, new int[1]).toDispatch();     
  34.             // 打開word文件,注意這里第三個參數(shù)要設為false,這個參數(shù)表示是否以只讀方式打開,  
  35.             // 因為我們要保存原文件,所以以可寫方式打開。  
  36.     
  37.             Dispatch selection = app.getProperty("Selection").toDispatch();// 獲得對Selection組件  
  38.     
  39.             Dispatch.call(selection, "HomeKey"new Variant(6));// 移到開頭  
  40.     
  41.             Dispatch find = Dispatch.call(selection, "Find").toDispatch();// 獲得Find組件  
  42.     
  43.             Dispatch.put(find, "Text", targetWord);// 查找字符串targetWord  
  44.     
  45.             Dispatch.call(find, "Execute");// 執(zhí)行查詢  
  46.     
  47.             Dispatch.put(selection, "Text", replaceWord);// 替換為replaceWord  
  48.     
  49.             Dispatch.call(doc, "Save");// 保存  
  50.     
  51.             Dispatch.call(doc, "Close"new Variant(false));     
  52.         } catch (Exception e) {     
  53.             e.printStackTrace();     
  54.         } finally {     
  55.             app.invoke("Quit"new Variant[] {});     
  56.             app.safeRelease();     
  57.         }     
  58.     }     
  59.     
  60.     /** 
  61.      * 創(chuàng)建一個word文檔 
  62.      * @param txtContent 要寫入word文檔的內(nèi)容 
  63.      * @param fileName 要保存的word文檔路徑 
  64.      */    
  65.     public static void createWordFile(String txtContent, String fileName) {     
  66.         ActiveXComponent app = new ActiveXComponent("Word.Application");// 啟動word  
  67.     
  68.         try {     
  69.             app.setProperty("Visible"new Variant(false));// 設置word不可見  
  70.             Dispatch docs = app.getProperty("Documents").toDispatch();     
  71.             Dispatch doc = Dispatch.call(docs, "Add").toDispatch();     
  72.             Dispatch selection = Dispatch.get(app, "Selection").toDispatch();     
  73.             Dispatch.put(selection, "Text", txtContent);     
  74.             Dispatch.call(Dispatch.call(app, "WordBasic").getDispatch(),     
  75.                     "FileSaveAs", fileName);     
  76.             Variant f = new Variant(false);     
  77.             Dispatch.call(doc, "Close", f);     
  78.         } catch (Exception e) {     
  79.             e.printStackTrace();     
  80.         } finally {     
  81.             app.invoke("Quit"new Variant[] {});     
  82.             app.safeRelease();     
  83.         }     
  84.     }     
  85.     
  86.     /** 
  87.      * 根據(jù)現(xiàn)有的txt文本來創(chuàng)建word 
  88.      * @param txt txt文本路徑 
  89.      * @param wordFile word路徑 
  90.      */    
  91.     public static void createWordWithTxt(String txt, String wordFile) {     
  92.         String txtContent = null;     
  93.         try {     
  94.             txtContent = bufferedReader(txt);     
  95.         } catch (IOException e) {     
  96.             // TODO Auto-generated catch block  
  97.             e.printStackTrace();     
  98.         }     
  99.         createWordFile(txtContent, wordFile);     
  100.     }     
  101.     
  102.     /** 
  103.      * 讀文件 
  104.      * @param path 
  105.      * @return 
  106.      * @throws IOException 
  107.      */    
  108.     public static String bufferedReader(String path) throws IOException {     
  109.         File file = new File(path);     
  110.         if (!file.exists() || file.isDirectory())     
  111.             throw new FileNotFoundException();     
  112.         BufferedReader br = new BufferedReader(new FileReader(file));     
  113.         String temp = null;     
  114.         StringBuffer sb = new StringBuffer();     
  115.         temp = br.readLine();     
  116.         while (temp != null) {     
  117.             sb.append(temp + " ");     
  118.             temp = br.readLine();     
  119.         }     
  120.         return sb.toString();     
  121.     }     
  122.     
  123.     /** 
  124.      * 給指定的word文檔在字符串指定位置插入圖片 
  125.      * @param wordFile word文檔 
  126.      * @param imagePath  待添加圖片的路徑 
  127.      * @param str 指定的字符串位置 
  128.      */    
  129.     public static void insertImage(String wordFile, String imagePath,     
  130.             String tarStr) {     
  131.         ActiveXComponent app = new ActiveXComponent("Word.Application");// 啟動word  
  132.         try {     
  133.             app.setProperty("Visible"new Variant(false));// 設置word不可見  
  134.     
  135.             Dispatch docs = app.getProperty("Documents").toDispatch();     
  136.     
  137.             Dispatch doc = Dispatch.invoke(     
  138.                     docs,     
  139.                     "Open",     
  140.                     Dispatch.Method,     
  141.                     new Object[] { wordFile, new Variant(false),     
  142.                             new Variant(false) }, new int[1]).toDispatch();     
  143.             // 打開word文件,注意這里第三個參數(shù)要設為false,這個參數(shù)表示是否以只讀方式打開,  
  144.             // 因為我們要保存原文件,所以以可寫方式打開。  
  145.     
  146.             Dispatch selection = app.getProperty("Selection").toDispatch();     
  147.     
  148.             Dispatch.call(selection, "HomeKey"new Variant(6));// 移到開頭  
  149.     
  150.             Dispatch find = Dispatch.call(selection, "Find").toDispatch();// 獲得Find組件  
  151.     
  152.             Dispatch.put(find, "Text", tarStr);// 查找字符串tarStr  
  153.     
  154.             Dispatch.call(find, "Execute");// 執(zhí)行查詢  
  155.     
  156.             Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),     
  157.                     "AddPicture", imagePath);// 在指定位置插入圖片  
  158.     
  159.             Dispatch.call(doc, "Save");// 保存  
  160.     
  161.             Dispatch.call(doc, "Close"new Variant(false));     
  162.         } catch (Exception e) {     
  163.             e.printStackTrace();     
  164.         } finally {     
  165.             app.invoke("Quit"new Variant[] {});     
  166.             app.safeRelease();     
  167.         }     
  168.     }     
  169.     
  170.     /** 
  171.      * 在指定word文檔的指定位置創(chuàng)建一個表格 
  172.      * @param wordFile指定word文檔 
  173.      * @param pos 指定位置 
  174.      * @param numCols 列數(shù) 
  175.      * @param numRows 行數(shù) 
  176.      */    
  177.     public static void createTable(String wordFile, String pos, int numCols,     
  178.             int numRows) {     
  179.         ActiveXComponent app = new ActiveXComponent("Word.Application");// 啟動word  
  180.         Dispatch selection = null;     
  181.         Dispatch doc = null;     
  182.         Dispatch docs = null;     
  183.         boolean b = false;     
  184.         try {     
  185.             app.setProperty("Visible"new Variant(false));// 設置word不可見  
  186.     
  187.             docs = app.getProperty("Documents").toDispatch();     
  188.     
  189.             doc = Dispatch.invoke(     
  190.                     docs,     
  191.                     "Open",     
  192.                     Dispatch.Method,     
  193.                     new Object[] { wordFile, new Variant(false),     
  194.                             new Variant(false) }, new int[1]).toDispatch();     
  195.             // 打開word文件,注意這里第三個參數(shù)要設為false,這個參數(shù)表示是否以只讀方式打開,  
  196.             // 因為我們要保存原文件,所以以可寫方式打開。  
  197.     
  198.             selection = app.getProperty("Selection").toDispatch();     
  199.         } catch (Exception e) {     
  200.             e.printStackTrace();     
  201.         }     
  202.         if (pos == null || pos.equals(""))     
  203.             b = false;     
  204.         // 從selection所在位置開始查詢  
  205.         Dispatch find = app.call(selection, "Find").toDispatch();     
  206.         // 設置要查找的內(nèi)容  
  207.         Dispatch.put(find, "Text", pos);     
  208.         // 向前查找  
  209.         Dispatch.put(find, "Forward""True");     
  210.         // 設置格式  
  211.         Dispatch.put(find, "Format""True");     
  212.         // 大小寫匹配  
  213.         Dispatch.put(find, "MatchCase""True");     
  214.         // 全字匹配  
  215.         Dispatch.put(find, "MatchWholeWord""True");     
  216.         // 查找并選中  
  217.         b = Dispatch.call(find, "Execute").getBoolean();     
  218.         // 創(chuàng)建表格  
  219.         if (b) {     
  220.             Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();     
  221.             Dispatch range = Dispatch.get(selection, "Range").toDispatch();     
  222.             Dispatch newTable = Dispatch.call(tables, "Add", range,     
  223.                     new Variant(numRows), new Variant(numCols)).toDispatch();     
  224.             Dispatch.call(selection, "MoveRight");     
  225.         } else    
  226.             System.out.println("沒有找到指定的位置,請檢查是否存在這樣的位置。");     
  227.         try {     
  228.             Dispatch.call(doc, "Save");// 保存  
  229.             Dispatch.call(doc, "Close"new Variant(false));     
  230.         } catch (Exception e) {     
  231.             e.printStackTrace();     
  232.         } finally {     
  233.             app.invoke("Quit"new Variant[] {});     
  234.             app.safeRelease();     
  235.         }     
  236.     }     
  237.     /** 
  238.      * @param args 
  239.      */    
  240.     public static void main(String[] args) {     
  241.         // TODO Auto-generated method stub  
  242.           
  243.     }     
  244. }  

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    日韩一区二区三区观看| 亚洲午夜av久久久精品| 99热中文字幕在线精品| 美国欧洲日本韩国二本道| 91精品蜜臀一区二区三区| 99精品人妻少妇一区二区人人妻| 亚洲中文字幕视频在线观看| 日韩高清毛片免费观看| 日韩综合国产欧美一区| av免费视屏在线观看| 欧美日韩国产免费看黄片| 国产精欧美一区二区三区久久| 国产又大又猛又粗又长又爽| 亚洲第一区欧美日韩在线| 欧美国产日本免费不卡| 中文字幕人妻一区二区免费 | 大伊香蕉一区二区三区| 情一色一区二区三区四| 国产在线成人免费高清观看av| 五月婷婷六月丁香狠狠| 久草视频这里只是精品| 国产亚洲精品香蕉视频播放| 日韩和欧美的一区二区三区| 亚洲精品一区二区三区日韩| 中文字幕亚洲精品乱码加勒比| 国产高清在线不卡一区| 免费精品国产日韩热久久| 国产又粗又猛又爽又黄的文字| 日韩精品一级一区二区| 福利在线午夜绝顶三级| 日韩精品一区二区毛片| 日本不卡视频在线观看| 一级欧美一级欧美在线播| 伊人久久青草地综合婷婷| 黄片三级免费在线观看| 国产精品欧美一区二区三区不卡 | 邻居人妻人公侵犯人妻视频| 丁香六月啪啪激情综合区| 亚洲综合香蕉在线视频| 国内欲色一区二区三区| 最新午夜福利视频偷拍|