`

jacob操作word文档(二)

 
阅读更多

  1. import com.jacob.activeX.ActiveXComponent;  
  2. import com.jacob.com.Dispatch;  
  3. import com.jacob.com.Variant;   
  4.   
  5. /** 
  6.  *  
  7.  * @author zhuzhen_hua@yahoo.com.cn 
  8.  *  
  9.  */   
  10.   
  11. public class WordBean {  
  12.  // word文档  
  13.  private Dispatch doc;   
  14.   
  15.  // word运行程序对象  
  16.  private ActiveXComponent word;   
  17.   
  18.  // 所有word文档集合  
  19.  private Dispatch documents;   
  20.   
  21.  // 选定的范围或插入点  
  22.  private Dispatch selection;  
  23.     
  24.   
  25.  private boolean saveOnExit = true;   
  26.   
  27.  public WordBean() {  
  28.   if (word == null) {  
  29.    word = new ActiveXComponent("Word.Application");  
  30.    word.setProperty("Visible"new Variant(false));  
  31.   }  
  32.   if (documents == null)  
  33.    documents = word.getProperty("Documents").toDispatch();  
  34.  }   
  35.   
  36.  /** 
  37.   * 设置退出时参数 
  38.   *  
  39.   * @param saveOnExit 
  40.   *            boolean true-退出时保存文件,false-退出时不保存文件 
  41.   */  
  42.  public void setSaveOnExit(boolean saveOnExit) {  
  43.   this.saveOnExit = saveOnExit;  
  44.  }   
  45.   
  46.  /** 
  47.   * 创建一个新的word文档 
  48.   *  
  49.   */  
  50.  public void createNewDocument() {  
  51.   doc = Dispatch.call(documents, "Add").toDispatch();  
  52.   selection = Dispatch.get(word, "Selection").toDispatch();  
  53.  }   
  54.   
  55.  /** 
  56.   * 打开一个已存在的文档 
  57.   *  
  58.   * @param docPath 
  59.   */  
  60.  public void openDocument(String docPath) {  
  61.   closeDocument();  
  62.   doc = Dispatch.call(documents, "Open", docPath).toDispatch();  
  63.   selection = Dispatch.get(word, "Selection").toDispatch();  
  64.  }   
  65.   
  66.  /** 
  67.   * 把选定的内容或插入点向上移动 
  68.   *  
  69.   * @param pos 
  70.   *            移动的距离 
  71.   */  
  72.  public void moveUp(int pos) {  
  73.   if (selection == null)  
  74.    selection = Dispatch.get(word, "Selection").toDispatch();  
  75.   for (int i = 0; i < pos; i++)  
  76.    Dispatch.call(selection, "MoveUp");   
  77.   
  78.  }   
  79.   
  80.  /** 
  81.   * 把选定的内容或者插入点向下移动 
  82.   *  
  83.   * @param pos 
  84.   *            移动的距离 
  85.   */  
  86.  public void moveDown(int pos) {  
  87.   if (selection == null)  
  88.    selection = Dispatch.get(word, "Selection").toDispatch();  
  89.   for (int i = 0; i < pos; i++)  
  90.    Dispatch.call(selection, "MoveDown");  
  91.  }   
  92.   
  93.  /** 
  94.   * 把选定的内容或者插入点向左移动 
  95.   *  
  96.   * @param pos 
  97.   *            移动的距离 
  98.   */  
  99.  public void moveLeft(int pos) {  
  100.   if (selection == null)  
  101.    selection = Dispatch.get(word, "Selection").toDispatch();  
  102.   for (int i = 0; i < pos; i++) {  
  103.    Dispatch.call(selection, "MoveLeft");  
  104.   }  
  105.  }   
  106.   
  107.  /** 
  108.   * 把选定的内容或者插入点向右移动 
  109.   *  
  110.   * @param pos 
  111.   *            移动的距离 
  112.   */  
  113.  public void moveRight(int pos) {  
  114.   if (selection == null)  
  115.    selection = Dispatch.get(word, "Selection").toDispatch();  
  116.   for (int i = 0; i < pos; i++)  
  117.    Dispatch.call(selection, "MoveRight");  
  118.  }   
  119.   
  120.  /** 
  121.   * 把插入点移动到文件首位置 
  122.   *  
  123.   */  
  124.  public void moveStart() {  
  125.   if (selection == null)  
  126.    selection = Dispatch.get(word, "Selection").toDispatch();  
  127.   Dispatch.call(selection, "HomeKey"new Variant(6));  
  128.  }   
  129.   
  130.  /** 
  131.   * 从选定内容或插入点开始查找文本 
  132.   *  
  133.   * @param toFindText 
  134.   *            要查找的文本 
  135.   * @return boolean true-查找到并选中该文本,false-未查找到文本 
  136.   */  
  137.  public boolean find(String toFindText) {  
  138.   if (toFindText == null || toFindText.equals(""))  
  139.    return false;  
  140.   // 从selection所在位置开始查询  
  141.   Dispatch find = word.call(selection, "Find").toDispatch();  
  142.   // 设置要查找的内容  
  143.   Dispatch.put(find, "Text", toFindText);  
  144.   // 向前查找  
  145.   Dispatch.put(find, "Forward""True");  
  146.   // 设置格式  
  147.   Dispatch.put(find, "Format""True");  
  148.   // 大小写匹配  
  149.   Dispatch.put(find, "MatchCase""True");  
  150.   // 全字匹配  
  151.   Dispatch.put(find, "MatchWholeWord""True");  
  152.   // 查找并选中  
  153.   return Dispatch.call(find, "Execute").getBoolean();  
  154.  }   
  155.   
  156.  /** 
  157.   * 把选定选定内容设定为替换文本 
  158.   *  
  159.   * @param toFindText 
  160.   *            查找字符串 
  161.   * @param newText 
  162.   *            要替换的内容 
  163.   * @return 
  164.   */  
  165.  public boolean replaceText(String toFindText, String newText) {  
  166.   if (!find(toFindText))  
  167.    return false;  
  168.   Dispatch.put(selection, "Text", newText);  
  169.   return true;  
  170.  }   
  171.   
  172.  /** 
  173.   * 全局替换文本 
  174.   *  
  175.   * @param toFindText 
  176.   *            查找字符串 
  177.   * @param newText 
  178.   *            要替换的内容 
  179.   */  
  180.  public void replaceAllText(String toFindText, String newText) {  
  181.   while (find(toFindText)) {  
  182.    Dispatch.put(selection, "Text", newText);  
  183.    Dispatch.call(selection, "MoveRight");  
  184.   }  
  185.  }   
  186.   
  187.  /** 
  188.   * 在当前插入点插入字符串 
  189.   *  
  190.   * @param newText 
  191.   *            要插入的新字符串 
  192.   */  
  193.  public void insertText(String newText) {  
  194.   Dispatch.put(selection, "Text", newText);  
  195.  }   
  196.   
  197.  /** 
  198.   *  
  199.   * @param toFindText 
  200.   *            要查找的字符串 
  201.   * @param imagePath 
  202.   *            图片路径 
  203.   * @return 
  204.   */  
  205.  public boolean replaceImage(String toFindText, String imagePath) {  
  206.   if (!find(toFindText))  
  207.    return false;  
  208.   Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),  
  209.     "AddPicture", imagePath);  
  210.   return true;  
  211.  }   
  212.   
  213.  /** 
  214.   * 全局替换图片 
  215.   *  
  216.   * @param toFindText 
  217.   *            查找字符串 
  218.   * @param imagePath 
  219.   *            图片路径 
  220.   */  
  221.  public void replaceAllImage(String toFindText, String imagePath) {  
  222.   while (find(toFindText)) {  
  223.    Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),  
  224.      "AddPicture", imagePath);  
  225.    Dispatch.call(selection, "MoveRight");  
  226.   }  
  227.  }   
  228.   
  229.  /** 
  230.   * 在当前插入点插入图片 
  231.   *  
  232.   * @param imagePath 
  233.   *            图片路径 
  234.   */  
  235.  public void insertImage(String imagePath) {  
  236.   Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),  
  237.     "AddPicture", imagePath);  
  238.  }   
  239.   
  240.  /** 
  241.   * 合并单元格 
  242.   *  
  243.   * @param tableIndex 
  244.   * @param fstCellRowIdx 
  245.   * @param fstCellColIdx 
  246.   * @param secCellRowIdx 
  247.   * @param secCellColIdx 
  248.   */  
  249.  public void mergeCell(int tableIndex, int fstCellRowIdx, int fstCellColIdx,  
  250.    int secCellRowIdx, int secCellColIdx) {  
  251.   // 所有表格  
  252.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  253.   // 要填充的表格  
  254.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  255.     .toDispatch();  
  256.   Dispatch fstCell = Dispatch.call(table, "Cell",  
  257.     new Variant(fstCellRowIdx), new Variant(fstCellColIdx))  
  258.     .toDispatch();  
  259.   Dispatch secCell = Dispatch.call(table, "Cell",  
  260.     new Variant(secCellRowIdx), new Variant(secCellColIdx))  
  261.     .toDispatch();  
  262.   Dispatch.call(fstCell, "Merge", secCell);  
  263.  }   
  264.   
  265.  /** 
  266.   * 在指定的单元格里填写数据 
  267.   *  
  268.   * @param tableIndex 
  269.   * @param cellRowIdx 
  270.   * @param cellColIdx 
  271.   * @param txt 
  272.   */  
  273.  public void putTxtToCell(int tableIndex, int cellRowIdx, int cellColIdx,  
  274.    String txt) {  
  275.   // 所有表格  
  276.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  277.   // 要填充的表格  
  278.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  279.     .toDispatch();  
  280.   Dispatch cell = Dispatch.call(table, "Cell"new Variant(cellRowIdx),  
  281.     new Variant(cellColIdx)).toDispatch();  
  282.   Dispatch.call(cell, "Select");  
  283.   Dispatch.put(selection, "Text", txt);  
  284.  }  
  285.  /** 
  286.   * 在当前文档拷贝剪贴板数据 
  287.   * @param pos 
  288.   */  
  289.     public void pasteExcelSheet(String pos){  
  290.      moveStart();  
  291.      if (this.find(pos)) {  
  292.    Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();  
  293.    Dispatch.call(textRange, "Paste");  
  294.   }  
  295.     }  
  296.       
  297.  /** 
  298.   * 在当前文档指定的位置拷贝表格 
  299.   *  
  300.   * @param pos 
  301.   *            当前文档指定的位置 
  302.   * @param tableIndex 
  303.   *            被拷贝的表格在word文档中所处的位置 
  304.   */  
  305.  public void copyTable(String pos, int tableIndex) {  
  306.   // 所有表格  
  307.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  308.   // 要填充的表格  
  309.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  310.     .toDispatch();  
  311.   Dispatch range = Dispatch.get(table, "Range").toDispatch();  
  312.   Dispatch.call(range, "Copy");  
  313.   if (this.find(pos)) {  
  314.    Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();  
  315.    Dispatch.call(textRange, "Paste");  
  316.   }  
  317.  }   
  318.   
  319.  /** 
  320.   * 在当前文档指定的位置拷贝来自另一个文档中的表格 
  321.   *  
  322.   * @param anotherDocPath 
  323.   *            另一个文档的磁盘路径 
  324.   * @param tableIndex 
  325.   *            被拷贝的表格在另一格文档中的位置 
  326.   * @param pos 
  327.   *            当前文档指定的位置 
  328.   */  
  329.  public void copyTableFromAnotherDoc(String anotherDocPath, int tableIndex,  
  330.    String pos) {  
  331.   Dispatch doc2 = null;  
  332.   try {  
  333.    doc2 = Dispatch.call(documents, "Open", anotherDocPath)  
  334.      .toDispatch();  
  335.    // 所有表格  
  336.    Dispatch tables = Dispatch.get(doc2, "Tables").toDispatch();  
  337.    // 要填充的表格  
  338.    Dispatch table = Dispatch.call(tables, "Item",  
  339.      new Variant(tableIndex)).toDispatch();  
  340.    Dispatch range = Dispatch.get(table, "Range").toDispatch();  
  341.    Dispatch.call(range, "Copy");  
  342.    if (this.find(pos)) {  
  343.     Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();  
  344.     Dispatch.call(textRange, "Paste");  
  345.    }  
  346.   } catch (Exception e) {  
  347.    e.printStackTrace();  
  348.   } finally {  
  349.    if (doc2 != null) {  
  350.     Dispatch.call(doc2, "Close"new Variant(saveOnExit));  
  351.     doc2 = null;  
  352.    }  
  353.   }  
  354.  }  
  355.  /** 
  356.   * 在当前文档指定的位置拷贝来自另一个文档中的图片 
  357.   * @param anotherDocPath 另一个文档的磁盘路径 
  358.   * @param shapeIndex 被拷贝的图片在另一格文档中的位置 
  359.   * @param pos 当前文档指定的位置 
  360.   */  
  361.     public void copyImageFromAnotherDoc(String anotherDocPath,int shapeIndex,String pos){  
  362.      Dispatch doc2 = null;  
  363.   try {  
  364.    doc2 = Dispatch.call(documents, "Open", anotherDocPath)  
  365.      .toDispatch();  
  366.    Dispatch shapes = Dispatch.get(doc2, "InLineShapes").toDispatch();  
  367.    Dispatch shape = Dispatch.call(shapes, "Item"new Variant(shapeIndex)).toDispatch();  
  368.    Dispatch imageRange = Dispatch.get(shape, "Range").toDispatch();  
  369.    Dispatch.call(imageRange, "Copy");  
  370.    if (this.find(pos)) {  
  371.     Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();  
  372.     Dispatch.call(textRange, "Paste");  
  373.    }  
  374.   } catch (Exception e) {  
  375.    e.printStackTrace();  
  376.   } finally {  
  377.    if (doc2 != null) {  
  378.     Dispatch.call(doc2, "Close"new Variant(saveOnExit));  
  379.     doc2 = null;  
  380.    }  
  381.   }  
  382.     }  
  383.  /** 
  384.   * 创建表格 
  385.   *  
  386.   * @param pos 
  387.   *            位置 
  388.   * @param cols 
  389.   *            列数 
  390.   * @param rows 
  391.   *            行数 
  392.   */  
  393.  public void createTable(String pos, int numCols, int numRows) {  
  394.   if (find(pos)) {  
  395.    Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  396.    Dispatch range = Dispatch.get(selection, "Range").toDispatch();  
  397.    Dispatch newTable = Dispatch.call(tables, "Add", range,  
  398.      new Variant(numRows), new Variant(numCols)).toDispatch();  
  399.    Dispatch.call(selection, "MoveRight");  
  400.   }else{  
  401.     Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  402.     Dispatch range = Dispatch.get(selection, "Range").toDispatch();  
  403.     Dispatch newTable = Dispatch.call(tables, "Add", range,  
  404.       new Variant(numRows), new Variant(numCols)).toDispatch();  
  405.     Dispatch.call(selection, "MoveRight");  
  406.   }  
  407.  }   
  408.   
  409.  /** 
  410.   * 在指定行前面增加行 
  411.   *  
  412.   * @param tableIndex 
  413.   *            word文件中的第N张表(从1开始) 
  414.   * @param rowIndex 
  415.   *            指定行的序号(从1开始) 
  416.   */  
  417.  public void addTableRow(int tableIndex, int rowIndex) {  
  418.   // 所有表格  
  419.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  420.   // 要填充的表格  
  421.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  422.     .toDispatch();  
  423.   // 表格的所有行  
  424.   Dispatch rows = Dispatch.get(table, "Rows").toDispatch();  
  425.   Dispatch row = Dispatch.call(rows, "Item"new Variant(rowIndex))  
  426.     .toDispatch();  
  427.   Dispatch.call(rows, "Add"new Variant(row));  
  428.  }   
  429.   
  430.  /** 
  431.   * 在第1行前增加一行 
  432.   *  
  433.   * @param tableIndex 
  434.   *  word文档中的第N张表(从1开始) 
  435.   */  
  436.  public void addFirstTableRow(int tableIndex) {  
  437.   // 所有表格  
  438.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  439.   // 要填充的表格  
  440.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  441.     .toDispatch();  
  442.   // 表格的所有行  
  443.   Dispatch rows = Dispatch.get(table, "Rows").toDispatch();  
  444.   Dispatch row = Dispatch.get(rows, "First").toDispatch();  
  445.   Dispatch.call(rows, "Add"new Variant(row));  
  446.  }   
  447.   
  448.  /** 
  449.   * 在最后1行前增加一行 
  450.   *  
  451.   * @param tableIndex 
  452.   *            word文档中的第N张表(从1开始) 
  453.   */  
  454.  public void addLastTableRow(int tableIndex) {  
  455.   // 所有表格  
  456.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  457.   // 要填充的表格  
  458.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  459.     .toDispatch();  
  460.   // 表格的所有行  
  461.   Dispatch rows = Dispatch.get(table, "Rows").toDispatch();  
  462.   Dispatch row = Dispatch.get(rows, "Last").toDispatch();  
  463.   Dispatch.call(rows, "Add"new Variant(row));  
  464.  }   
  465.  /** 
  466.   * 增加一行 
  467.   *  
  468.   * @param tableIndex 
  469.   *            word文档中的第N张表(从1开始) 
  470.   */  
  471.  public void addRow(int tableIndex) {  
  472.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  473.   // 要填充的表格  
  474.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  475.     .toDispatch();  
  476.   // 表格的所有行  
  477.   Dispatch rows = Dispatch.get(table, "Rows").toDispatch();  
  478.   Dispatch.call(rows, "Add");  
  479.  }   
  480.   
  481.  /** 
  482.   * 增加一列 
  483.   *  
  484.   * @param tableIndex 
  485.   *            word文档中的第N张表(从1开始) 
  486.   */  
  487.  public void addCol(int tableIndex) {  
  488.   // 所有表格  
  489.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  490.   // 要填充的表格  
  491.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  492.     .toDispatch();  
  493.   // 表格的所有行  
  494.   Dispatch cols = Dispatch.get(table, "Columns").toDispatch();  
  495.   Dispatch.call(cols, "Add").toDispatch();  
  496.   Dispatch.call(cols, "AutoFit");  
  497.  }   
  498.   
  499.  /** 
  500.   * 在指定列前面增加表格的列 
  501.   *  
  502.   * @param tableIndex 
  503.   *            word文档中的第N张表(从1开始) 
  504.   * @param colIndex 
  505.   *            制定列的序号 (从1开始) 
  506.   */  
  507.  public void addTableCol(int tableIndex, int colIndex) {  
  508.   // 所有表格  
  509.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  510.   // 要填充的表格  
  511.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  512.     .toDispatch();  
  513.   // 表格的所有行  
  514.   Dispatch cols = Dispatch.get(table, "Columns").toDispatch();  
  515.   System.out.println(Dispatch.get(cols, "Count"));  
  516.   Dispatch col = Dispatch.call(cols, "Item"new Variant(colIndex))  
  517.     .toDispatch();  
  518.   // Dispatch col = Dispatch.get(cols, "First").toDispatch();  
  519.   Dispatch.call(cols, "Add", col).toDispatch();  
  520.   Dispatch.call(cols, "AutoFit");  
  521.  }   
  522.   
  523.  /** 
  524.   * 在第1列前增加一列 
  525.   *  
  526.   * @param tableIndex 
  527.   *            word文档中的第N张表(从1开始) 
  528.   */  
  529.  public void addFirstTableCol(int tableIndex) {  
  530.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  531.   // 要填充的表格  
  532.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  533.     .toDispatch();  
  534.   // 表格的所有行  
  535.   Dispatch cols = Dispatch.get(table, "Columns").toDispatch();  
  536.   Dispatch col = Dispatch.get(cols, "First").toDispatch();  
  537.   Dispatch.call(cols, "Add", col).toDispatch();  
  538.   Dispatch.call(cols, "AutoFit");  
  539.  }   
  540.   
  541.  /** 
  542.   * 在最后一列前增加一列 
  543.   *  
  544.   * @param tableIndex 
  545.   *            word文档中的第N张表(从1开始) 
  546.   */  
  547.  public void addLastTableCol(int tableIndex) {  
  548.   Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  549.   // 要填充的表格  
  550.   Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  551.     .toDispatch();  
  552.   // 表格的所有行  
  553.   Dispatch cols = Dispatch.get(table, "Columns").toDispatch();  
  554.   Dispatch col = Dispatch.get(cols, "Last").toDispatch();  
  555.   Dispatch.call(cols, "Add", col).toDispatch();  
  556.   Dispatch.call(cols, "AutoFit");  
  557.  }  
  558.  /** 
  559.   * 自动调整表格 
  560.   * 
  561.   */  
  562.     public void autoFitTable(){  
  563.      Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  564.      int count = Dispatch.get(tables, "Count").toInt();  
  565.      for(int i=0;i<count;i++){  
  566.       Dispatch table = Dispatch.call(tables, "Item"new Variant(i+1))  
  567.    .toDispatch();  
  568.       Dispatch cols = Dispatch.get(table, "Columns").toDispatch();  
  569.       Dispatch.call(cols, "AutoFit");  
  570.      }  
  571.     }  
  572.     /** 
  573.      * 调用word里的宏以调整表格的宽度,其中宏保存在document下 
  574.      * 
  575.      */  
  576.     public void callWordMacro(){  
  577.      Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  578.      int count = Dispatch.get(tables, "Count").toInt();  
  579.      Variant vMacroName = new Variant("Normal.NewMacros.tableFit");  
  580.      Variant vParam = new Variant("param1");  
  581.      Variant para[]=new Variant[]{vMacroName};  
  582.      for(int i=0;i<count;i++){       Dispatch table = Dispatch.call(tables, "Item"new Variant(i+1))  
  583.    .toDispatch();  
  584.       Dispatch.call(table, "Select");  
  585.       Dispatch.call(word,"Run","tableFitContent");  
  586.      }   
  587.     }  
  588.  /** 
  589.   * 设置当前选定内容的字体 
  590.   *  
  591.   * @param boldSize 
  592.   * @param italicSize 
  593.   * @param underLineSize 
  594.   *            下划线 
  595.   * @param colorSize 
  596.   *            字体颜色 
  597.   * @param size 
  598.   *            字体大小 
  599.   * @param name 
  600.   *            字体名称 
  601.   */  
  602.  public void setFont(boolean bold, boolean italic, boolean underLine,  
  603.    String colorSize, String size, String name) {  
  604.   Dispatch font = Dispatch.get(selection, "Font").toDispatch();  
  605.   Dispatch.put(font, "Name"new Variant(name));  
  606.   Dispatch.put(font, "Bold"new Variant(bold));  
  607.   Dispatch.put(font, "Italic"new Variant(italic));  
  608.   Dispatch.put(font, "Underline"new Variant(underLine));  
  609.   Dispatch.put(font, "Color", colorSize);  
  610.   Dispatch.put(font, "Size", size);  
  611.  }   
  612.   
  613.  /** 
  614.   * 文件保存或另存为 
  615.   *  
  616.   * @param savePath 
  617.   *            保存或另存为路径 
  618.   */  
  619.  public void save(String savePath) {  
  620.   Dispatch.call(Dispatch.call(word, "WordBasic").getDispatch(),  
  621.     "FileSaveAs", savePath);  
  622.  }   
  623.   
  624.  /** 
  625.   * 关闭文档 
  626.   *@param val 0不保存修改 -1 保存修改 -2 提示是否保存修改 
  627.   */  
  628.  public void closeDocument(int val) {  
  629.   Dispatch.call(doc, "Close"new Variant(val));  
  630.   doc = null;  
  631.  }  
  632.  /** 
  633.   * 关闭当前word文档 
  634.   *  
  635.   */  
  636.  public void closeDocument() {  
  637.   if (doc != null) {  
  638.    Dispatch.call(doc, "Save");  
  639.    Dispatch.call(doc, "Close"new Variant(saveOnExit));  
  640.    doc = null;  
  641.   }  
  642.  }   
  643.   
  644.  /** 
  645.   * 关闭全部应用 
  646.   *  
  647.   */  
  648.  public void close() {  
  649.   //closeDocument();  
  650.   if (word != null) {  
  651.    Dispatch.call(word, "Quit");  
  652.    word = null;  
  653.   }  
  654.   selection = null;  
  655.   documents = null;  
  656.  }   
  657.   
  658.  /** 
  659.   * 打印当前word文档 
  660.   *  
  661.   */  
  662.  public void printFile() {  
  663.   if (doc != null) {  
  664.    Dispatch.call(doc, "PrintOut");  
  665.   }  
  666.  }  
  667.   
  668. //读取表格指定单元格中的内容  
  669.  public String getContent(int tableIndex, int cellRowIdx, int cellColIdx){  
  670.      // 所有表格  
  671.      Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();  
  672.      // 要填充的表格  
  673.      Dispatch table = Dispatch.call(tables, "Item"new Variant(tableIndex))  
  674.        .toDispatch();  
  675.      Dispatch cell = Dispatch.call(table, "Cell"new Variant(cellRowIdx),  
  676.        new Variant(cellColIdx)).toDispatch();  
  677.      Dispatch Range=Dispatch.get(cell,"Range").toDispatch();   
  678.      return Dispatch.get(Range,"Text").toString();  
  679.        
  680.  }  
  681.   
  682.  public static void main(String args[]) {  
  683.   WordBean msWordManager = new WordBean();  
  684.   try {  
  685.   /* 
  686.    创建 
  687.     msWordManager.createNewDocument();  
  688.    msWordManager.createTable("", 5, 5); 
  689.    msWordManager.mergeCell(1, 1, 1, 1, 5); 
  690.    msWordManager.mergeCell(1, 2, 1, 2, 5); 
  691.    msWordManager.mergeCell(1, 3, 1, 3, 5); 
  692.    msWordManager.putTxtToCell(1,1,1,"主题"); 
  693.    msWordManager.putTxtToCell(1,2,1,"时间"); 
  694.    msWordManager.putTxtToCell(1,3,1,"人员"); 
  695.    msWordManager.putTxtToCell(1,4,2,"说话了"); 
  696.    msWordManager.save("c:\\asdf1.doc");*/  
  697.    msWordManager.openDocument("c:\\asdf1.doc");  
  698.    msWordManager.addRow(1);  
  699.    msWordManager.putTxtToCell(141"gaga");  
  700.   } catch (Exception e)  
  701.    e.printStackTrace();  
  702.   }finally{  
  703.    msWordManager.close();  
  704.   }  
  705.  }   
  706.   
  707. }  
分享到:
评论

相关推荐

    jacob 操作word 文档详解

    Jacob 操作 Word 文档详解 Jacob 操作 Word 文档概述 Jacob 是一个 Java 库,用于访问和操作 Microsoft Office 应用程序,包括 Word。它提供了一个基于 COM(Component Object Model)的接口,允许 Java 应用...

    Jacob操作word 文档的方法集!(含创建目录),使用的Jacob版本是1.5

    在这个“Jacob操作word文档的方法集”中,我们将探讨如何使用Jacob 1.5版本来创建和操作Word文档,特别是创建目录。 首先,为了使用Jacob,你需要在你的项目中添加Jacob的jar文件。这通常涉及到将库添加到项目的类...

    jacob操作word文档

    下面将详细阐述Jacob操作Word文档的核心知识点。 1. **Jacob简介** Jacob全称为Java-COM Bridge,是一个开源项目,它的主要作用是提供了一个桥梁,使得Java应用程序能够调用COM组件,进而与Windows系统上的Office...

    jacob操作word文件

    在给定的代码片段中,`GetWord` 类提供了使用Jacob操作Word文档的一些基本功能。 首先,`GetWord` 类初始化了一个`ActiveXComponent` 对象 `word`,这是Jacob库中的一个关键类,用于实例化COM对象,这里是Microsoft...

    如何利用Java-JACOB操作WORD文档

    本文主要探讨如何使用Java-JACOB来创建和操作Word文档。 首先,使用JACOB之前,确保你的系统中已经安装了Microsoft Office,并且配置了相应的COM组件。JACOB本身是一个开源项目,可以在SourceForge上找到...

    Jacob处理Word文档搞定了

    载Jacob_1.11_zip,终于把Jacob处理Word文档搞定了

    Jacob处理Word文档的方法

    在处理Word文档时,我们可以利用Jacob调用Word的COM组件,例如Microsoft.Office.Interop.Word,来实现对Word文档的操作。 要使用Jacob,你需要首先在项目中添加Jacob的库文件。在提供的压缩包`jacob-1.15-M2.zip`中...

    jacob给Word文档添加页脚

    ### jacob给Word文档添加页脚 在日常工作中,Word文档是经常被使用的工具之一,尤其是在需要编写报告、论文或专业文档时。为了使文档更加规范和专业,往往需要添加页眉、页脚等元素。其中,页脚常用于显示页码、...

    jacob实现文档插入到word中

    在本文中,我们将深入探讨如何使用Jacob在Word文档中插入其他文档。 首先,理解Java Jacob的基本使用是至关重要的。Jacob通过COM(Component Object Model)接口与Windows操作系统中的Office应用进行通信。因此,要...

    JACOB操作word和excel示例

    在“如何使用jacob将word转换为PDF.doc”这个示例中,我们将学习如何使用Jacob将Word文档转换成PDF格式。以下是基本步骤: 1. **设置Jacob环境**:首先,你需要在项目中添加Jacob的jar文件,并确保系统路径中包含...

    java_jacob_操作word_文档

    #### 二、Java Jacob 操作 Word 文档的基本流程 1. **初始化 Word 应用程序:** - 创建一个 `ActiveXComponent` 实例,表示 Word 应用程序。 - 设置 Word 应用程序是否可见,这通常取决于是否需要在前台显示 Word...

    jacob 导出word 整理

    Jacob允许Java应用程序通过COM接口与Windows操作系统中的Office应用进行通信,从而实现对Word文档的操作。 Jacob库的核心功能是它提供了Java到COM接口的桥接,使得开发者可以调用Office应用的API来处理Word文档。...

    jacob读取word表格

    标题“jacob读取word表格”涉及到的是使用Jacob库来操作Microsoft Word文档,特别是从中读取表格数据。Jacob是一个Java到COM桥接库,允许Java应用程序调用COM组件,如Microsoft Office的应用程序。 在Java中,直接...

    jacob生成word目录

    本篇文章将深入探讨如何利用JACOB来自动生成Word文档的目录。 首先,我们需要了解什么是目录(TOC,Table of Contents)。在Word文档中,目录是一份列出文档主要部分及其对应页码的索引,帮助读者快速定位到他们感...

    jacob以目录和段落分析读取Word文档(自己写的)

    在这个场景下,我们关注的是使用Jacob库来实现对Word文档的高级操作,特别是通过目录结构分析和读取文档内容。Jacob是一个Java COM自动化桥接库,它允许Java应用程序利用微软Office应用的COM接口,包括Word。 首先...

    java使用jacob工具操作word文档

    总结来说,Java结合JACOB工具提供了一种有效的方法来操作Word文档,无论是读取还是写入,都为开发者提供了便利。然而,这种方式有一定的局限性,特别是在跨平台应用上。通过理解这些基本操作,你可以根据需求灵活地...

    jacob操作word转换成pdf

    在这个场景中,我们将讨论如何利用JACOB将Word文档转换为PDF。 首先,我们需要理解JACOB的工作原理。JACOB是通过Java的JNI(Java Native Interface)来调用COM接口的,这样就可以在Java代码中直接操纵COM对象,例如...

    (转)Java jacob调用打印机打印word文档

    在这个特定的情况下,Jacob被用来调用打印机来打印Word文档。这个过程涉及到几个关键的知识点: 1. **Jacob库**:Jacob全称为Java COM Bridge,是一个开源的Java库,通过JNI(Java Native Interface)技术实现,...

    使用Jacob输出word文档

    NULL 博文链接:https://clq9761.iteye.com/blog/1284318

Global site tag (gtag.js) - Google Analytics