`

jacob操作word增加表格 行列

    博客分类:
  • java
阅读更多

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

public   class  StudyJacob {

     // word文档
     private  Dispatch doc =  null ;
     // word运行程序对象
     private  ActiveXComponent word =  null ;

     // 所有word文档集合
     private  Dispatch documents =  null ;
     // 选定的范围或插入点
     private   static  Dispatch selection =  null ;
     // 设置是否保存后才退出的标志
     private   boolean  saveOnExit =  true ;
     /**
     * word中的当前文档
     */
     private   static  Dispatch document =  null ;
     // private static Dispatch textFrame = null;
     //
     /**
     * 所有表格
     */
     private  Dispatch tables;
     /**
     * 当前表格
     */
     private  Dispatch table;
     /**
     * 当前单元格
     */
     private  Dispatch cell;
     /**
     * 当前表格中的所有行
     */
     private  Dispatch rows;
     /**
     * 表格中的某一行
     */
     private  Dispatch row;
     /**
     * 表格中的所有列
     */
     private  Dispatch columns;
     /**
     * 表格中的某一列
     */
     private  Dispatch column;
     /**
     * 打开word时同时要打开的文档,不指定时将新建一个空白文档
     */
     // private File openDoc;
     private   static  Dispatch shapes;
     private   static  Dispatch shape;
     private   static  Dispatch textRange;
     private   static  Dispatch textframe;
     private  Dispatch range;
     private  Dispatch paragraphs;
     private  Dispatch paragraph;

     // constructor
     public  StudyJacob() {

         if  (word ==  null ) {
            word =  new  ActiveXComponent( "Word.Application" );
            word.setProperty( "Visible" ,  new  Variant( true ));
        }
         if  (documents ==  null ) {
            documents = word.getProperty( "Documents" ).toDispatch();
        }

    }

     /**
     * 创建一个新的word文档
     * 
     */

     public   void  createNewDocument() {
        doc = Dispatch.call(documents,  "Add" ).toDispatch();

        selection = Dispatch.get(word,  "Selection" ).toDispatch();

    }

     /**
     * 打开一个已存在的文档
     * 
     * @param docPath
     */

     public   void  openDocument(String docPath) {
         if  ( this .doc !=  null ) {
             this .closeDocument();
        }
        doc = Dispatch.call(documents,  "Open" , docPath).toDispatch();
        selection = Dispatch.get(word,  "Selection" ).toDispatch();
    }

     /**
     * 关闭当前word文档
     * 
     */
     public   void  closeDocument() {
         if  (doc !=  null ) {
            Dispatch.call(doc,  "Save" );
            Dispatch.call(doc,  "Close" ,  new  Variant(saveOnExit));
            doc =  null ;
        }
    }

     /**
     * 关闭全部应用
     * 
     */
     public   void  close() {
        closeDocument();
         if  (word !=  null ) {
            Dispatch.call(word,  "Quit" );
            word =  null ;
        }
        selection =  null ;
        documents =  null ;

    }

     /**
     * 把插入点移动到文件首位置
     * 
     */
     public   void  moveStart() {
         if  (selection ==  null )
            selection = Dispatch.get(word,  "Selection" ).toDispatch();
        Dispatch.call(selection,  "HomeKey" ,  new  Variant( 6 ));

    }

     /**
     * 在当前插入点插入字符串
     * 
     * @param newText
     *            要插入的新字符串
     */
     public   void  insertText(String newText) {
        Dispatch.put(selection,  "Text" , newText);
    }

     /**
     * 在当前插入点插入图片
     * 
     * @param imagePath
     *            图片路径
     */
     public   void  insertImage(String imagePath) {
        Dispatch.call(Dispatch.get(selection,  "InLineShapes" ).toDispatch(),
                 "AddPicture" , imagePath);
    }

     /**
     * 把选定的内容或者插入点向下移动
     * 
     * @param pos
     *            移动的距离
     */
     public   void  moveDown( int  pos) {
         if  (selection ==  null )
            selection = Dispatch.get(word,  "Selection" ).toDispatch();
         for  ( int  i =  0 ; i < pos; i++)
            Dispatch.call(selection,  "MoveDown" );
    }

     /**
     * 把选定的内容或插入点向上移动
     * 
     * @param pos
     *            移动的距离
     */
     public   void  moveUp( int  pos) {
         if  (selection ==  null )
            selection = Dispatch.get(word,  "Selection" ).toDispatch();
         for  ( int  i =  0 ; i < pos; i++)
            Dispatch.call(selection,  "MoveUp" );
    }

     /**
     * 把选定的内容或者插入点向左移动
     * 
     * @param pos
     *            移动的距离
     */
     public   void  moveLeft( int  pos) {
         if  (selection ==  null )
            selection = Dispatch.get(word,  "Selection" ).toDispatch();
         for  ( int  i =  0 ; i < pos; i++) {
            Dispatch.call(selection,  "MoveLeft" );
        }
    }

     /**
     * 把选定的内容或者插入点向右移动
     * 
     * @param pos
     *            移动的距离
     */
     public   void  moveRight( int  pos) {
         if  (selection ==  null )
            selection = Dispatch.get(word,  "Selection" ).toDispatch();
         for  ( int  i =  0 ; i < pos; i++)
            Dispatch.call(selection,  "MoveRight" );
    }

     /**
     * 文件保存或另存为
     * 
     * @param savePath
     *            一定要记得加上扩展名 .doc 保存或另存为路径
     */
     public   void  save(String savePath) {
        Dispatch.call(
                (Dispatch) Dispatch.call(word,  "WordBasic" ).getDispatch(),
                 "FileSaveAs" , savePath);

    }

     /**
     * 从第tIndex个Table中取出值第row行,第col列的值
     * 
     * @param tableIndex
     *            文档中的第tIndex个Table,即tIndex为索引取
     * @param cellRowIdx
     *            cell在Table第row行
     * @param cellColIdx
     *            cell在Talbe第col列
     * @return cell单元值
     * @throws Exception
     */
     public  String getCellString( int  tableIndex,  int  cellRowIdx,  int  cellColIdx)
             throws  Exception {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要取数据的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
        Dispatch cell = Dispatch.call(table,  "Cell" ,  new  Variant(cellRowIdx),
                 new  Variant(cellColIdx)).toDispatch();
        Dispatch.call(cell,  "Select" );
         return  Dispatch.get(selection,  "Text" ).toString();
    }

     /**
     * 从第tableIndex个Table中取出值第cellRowIdx行,第cellColIdx列的值
     * 
     * @param tIndex
     *            文档中的第tIndex个Table,即tIndex为索引取
     * @param cellRowIdx
     *            cell在Table第row行
     * @param cellColIdx
     *            cell在Talbe第col列
     * @return cell单元值
     * @throws Exception
     */
     public   void  getCellValue( int  tableIndex,  int  cellRowIdx,  int  cellColIdx)
             throws  Exception {

         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要取数据的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
        Dispatch cell = Dispatch.call(table,  "Cell" ,  new  Variant(cellRowIdx),
                 new  Variant(cellColIdx)).toDispatch();
        Dispatch.call(cell,  "Select" );
        Dispatch.call(selection,  "Copy" );

    }

     /**
     * 在当前光标处做粘贴
     */
     public   void  paste() {
        Dispatch.call(selection,  "Paste" );
    }

     /**
     * 在当前光标处添加图片
     * 
     * @param imgPath
     *            图片的地址
     */
     public   void  addImage(String imgPath) {
         if  (imgPath !=  ""  && imgPath !=  null ) {
            Dispatch image = Dispatch.get(selection,  "InLineShapes" )
                    .toDispatch();
            Dispatch.call(image,  "AddPicture" , imgPath);
        }
    }

     /**
     * 在指定的单元格里填写数据
     * 
     * @param tableIndex
     *            文档中的第tIndex个Table,即tIndex为索引取
     * @param cellRowIdx
     *            cell在Table第row行
     * @param cellColIdx
     *            cell在Talbe第col列
     * @param txt
     *            填写的数据
     */
     public   void  putTxtToCell( int  tableIndex,  int  cellRowIdx,  int  cellColIdx,
            String txt) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
        Dispatch cell = Dispatch.call(table,  "Cell" ,  new  Variant(cellRowIdx),
                 new  Variant(cellColIdx)).toDispatch();
        Dispatch.call(cell,  "Select" );
        Dispatch.put(selection,  "Text" , txt);
    }

     /**
     * 
     * 得到当前文档的tables集合
     */
     public  Dispatch getTables()  throws  Exception {
         if  ( this .doc ==  null ) {
             throw   new  Exception( "there is not a document can't be operate!!!" );
        }

         return  Dispatch.get(doc,  "Tables" ).toDispatch();
    }

     /**
     * 
     * 得到当前文档的表格数
     * 
     * @param Dispatch
     */
     public   int  getTablesCount(Dispatch tables)  throws  Exception {
         int  count =  0 ;
         try  {
             this .getTables();
        }  catch  (Exception e) {
             throw   new  Exception( "there is not any table!!" );
        }
        count = Dispatch.get(tables,  "Count" ).toInt();

         return  count;
    }

     /**
     * 在当前文档指定的位置拷贝表格
     * 
     * @param pos
     *            当前文档指定的位置
     * @param tableIndex
     *            被拷贝的表格在word文档中所处的位置
     */
     public   void  copyTable(String pos,  int  tableIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
        Dispatch range = Dispatch.get(table,  "Range" ).toDispatch();
        Dispatch.call(range,  "Copy" );
        Dispatch textRange = Dispatch.get(selection,  "Range" ).toDispatch();
        Dispatch.call(textRange,  "Paste" );

    }

     /**
     * 在当前文档指定的位置拷贝来自另一个文档中的表格
     * 
     * @param anotherDocPath
     *            另一个文档的磁盘路径
     * @param tableIndex
     *            被拷贝的表格在另一格文档中的位置
     * @param pos
     *            当前文档指定的位置
     */
     public   void  copyTableFromAnotherDoc(String anotherDocPath,  int  tableIndex,
            String pos) {
        Dispatch doc2 =  null ;
         try  {
            doc2 = Dispatch.call(documents,  "Open" , anotherDocPath)
                    .toDispatch();
             // 所有表格
            Dispatch tables = Dispatch.get(doc2,  "Tables" ).toDispatch();
             // 要填充的表格
            Dispatch table = Dispatch.call(tables,  "Item" ,
                     new  Variant(tableIndex)).toDispatch();
            Dispatch range = Dispatch.get(table,  "Range" ).toDispatch();
            Dispatch.call(range,  "Copy" );

            Dispatch textRange = Dispatch.get(selection,  "Range" ).toDispatch();
            moveDown( 1 );
            Dispatch.call(textRange,  "Paste" );

        }  catch  (Exception e) {
            e.printStackTrace();
        }  finally  {
             if  (doc2 !=  null ) {
                Dispatch.call(doc2,  "Close" ,  new  Variant(saveOnExit));
                doc2 =  null ;
            }
        }
    }

     /**
     * 在当前文档拷贝剪贴板数据
     * 
     * @param pos
     */
     public   void  pasteExcelSheet(String pos) {
        moveStart();

        Dispatch textRange = Dispatch.get(selection,  "Range" ).toDispatch();
        Dispatch.call(textRange,  "Paste" );

    }

     /**
     * 选中dispatch对象
     * 
     * @param dispatch(分配,派遣)
     */
     private   void  select(Dispatch dispatch) {
        Dispatch.call(dispatch,  "Select" );
    }

     /**
     * 在当前文档指定的位置拷贝来自另一个文档中的图片
     * 
     * @param anotherDocPath
     *            另一个文档的磁盘路径
     * @param shapeIndex
     *            被拷贝的图片在另一格文档中的位置
     * @param pos
     *            当前文档指定的位置
     * @throws com.jacob.com.ComFailException
     *             Invoke of: Item Source: Microsoft Word 若shapeIndex不存在
     */
     public   void  copyImageFromAnotherDoc(String anotherDocPath,  int  shapeIndex,
            String pos) {
        Dispatch doc2 =  null ;
         try  {
            doc2 = Dispatch.call(documents,  "Open" , anotherDocPath)
                    .toDispatch();
            Dispatch shapes = Dispatch.get(doc2,  "InLineShapes" ).toDispatch();
            Dispatch shape = Dispatch.call(shapes,  "Item" ,
                     new  Variant(shapeIndex)).toDispatch();
            Dispatch imageRange = Dispatch.get(shape,  "Range" ).toDispatch();
            Dispatch.call(imageRange,  "Copy" );

            Dispatch textRange = Dispatch.get(selection,  "Range" ).toDispatch();
            moveDown( 4 );
            Dispatch.call(textRange,  "Paste" );

        }  catch  (Exception e) {
            e.printStackTrace();
        }  finally  {
             if  (doc2 !=  null ) {
                Dispatch.call(doc2,  "Close" ,  new  Variant(saveOnExit));
                doc2 =  null ;
            }
        }
    }

     /**
     * 打印当前word文档
     * 
     * @throws Exception
     *             com.jacob.com.ComFailException: Invoke of: PrintOut Source:
     *             Microsoft Word 若无打印机
     */
     public   void  printFile() {
         if  (doc !=  null ) {
            Dispatch.call(doc,  "PrintOut" );
        }
    }

     /**
     * 打印文本,反选,在文本后换行<br>
     * 警告:使用了Home, End来取消选中
     * 
     * @param s
     */
     public   void  println(String s) {
        write(s);
        goToEnd();
        cmd( "TypeParagraph" );
    }

     /**
     * 执行某条宏指令
     * 
     * @param cmd
     */
     private   void  cmd(String cmd) {
        Dispatch.call(selection, cmd);
    }

     /**
     * 按下Ctrl + End键
     */
     public   void  goToEnd() {
        Dispatch.call(selection,  "EndKey" ,  "6" );
    }

     /**
     * 反选,再打印文本<br>
     * 警告:使用了Home, End来取消选中
     */
     public   void  print(String s) {
        goToEnd();
        write(s);
    }

     /**
     * 不反选, 直接输出文本
     * 
     * @param s
     */
     public   void  write(String s) {
        Dispatch.put(selection,  "Text" , s);
    }

     /**
     * 反选,在文本后换行<br>
     * 警告:使用了Home, End来取消选中
     */
     public   void  println() {
        home();
        end();
        cmd( "TypeParagraph" );
    }

     /**
     * 按下Home键
     */
     public   void  home() {
        Dispatch.call(selection,  "HomeKey" ,  "5" );
    }

     /**
     * 按下End键
     */
     public   void  end() {
        Dispatch.call(selection,  "EndKey" ,  "5" );
    }

     /**
     * 按下Ctrl + Home键
     */
     public   void  goToBegin() {
        Dispatch.call(selection,  "HomeKey" ,  "6" );
    }

     /**
     * 设置指定表格指定列的列宽
     * 
     * @param tableIndex
     * @param columnWidth
     * @param columnIndex
     */
     public   void  setColumnWidth( int  tableIndex,  float  columnWidth,
             int  columnIndex) {
         this .getTable(tableIndex);

         this .setColumnWidth(columnWidth, columnIndex);
    }

     /**
     * 查找表
     * 
     * @param tableIndex
     * @return
     */
     public  Dispatch getTable( int  tableIndex) {
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();

         return  table;
    }

     public  Dispatch getShapes()  throws  Exception {
         return  Dispatch.get(doc,  "Shapes" ).toDispatch();
    }

     public   int  getShapesCount()  throws  Exception {
         int  count =  0 ;

        count = Dispatch.get(shapes,  "Count" ).toInt();

         return  count;
    }

     public  Dispatch getShape( int  tIndex)  throws  Exception {

         return  Dispatch.call(shapes,  "Item" ,  new  Variant(tIndex)).toDispatch();
         // return Dispatch.invoke(shapes,"item",Dispatch.Method,new Object[]{
         // new Integer(tIndex)},new int[1]).toDispatch();
    }

     public  Dispatch getTextFrame()  throws  Exception {
         return  Dispatch.get(shape,  "TextFrame" ).toDispatch();
    }

     public  Dispatch getTextRange()  throws  Exception {
         return  Dispatch.get(textframe,  "TextRange" ).toDispatch();
    }

     /**
     * 设置当前表格指定列的列宽
     * 
     * @param columnWidth
     * @param columnIndex
     * @throws 如果不是整齐的表格不能使用
     */
     public   void  setColumnWidth( float  columnWidth,  int  columnIndex) {
         if  (columnWidth <  11 ) {
            columnWidth =  120 ;
        }

         if  (columns ==  null  || column ==  null ) {
             this .getColumns();
             this .getColumn(columnIndex);
        }

        Dispatch.put(column,  "Width" ,  new  Variant(columnWidth));
    }

     /**
     * 设置指定表格指定列的背景色
     * 
     * @param tableIndex
     * @param columnIndex
     * @param color
     *            取值范围 0 < color < 17 默认:16 浅灰色 1:黑色 2:蓝色 3:浅蓝 ...............
     */
     public   void  setColumnBgColor( int  tableIndex,  int  columnIndex,  int  color) {
         this .getTable(tableIndex);
         this .setColumnBgColor(columnIndex, color);
    }

     /**
     * 设置当前表格指定列的背景色
     * 
     * @param columnIndex
     * @param color
     *            取值范围 0 < color < 17 默认:16 浅灰色 1:黑色 2:蓝色 3:浅蓝 ...............
     */
     public   void  setColumnBgColor( int  columnIndex,  int  color) {
         this .getColumn(columnIndex);

        Dispatch shading = Dispatch.get(column,  "Shading" ).toDispatch();

         if  (color >  16  || color <  1 )
            color =  16 ;
        Dispatch
                .put(shading,  "BackgroundPatternColorIndex" ,  new  Variant(color));
    }

     /**
     * 初始化 com 线程
     */
     public   void  initCom() {
        ComThread.InitSTA();
    }

     /**
     * 释放 com 线程资源 com 的线程回收不由 java 垃圾回收机制回收
     */
     public   void  releaseCom() {
        ComThread.Release();
    }

     /**
     * 设置当前表格指定行的背景色
     * 
     * @param rowIndex
     * @param color
     *            取值范围 0 < color < 17 默认:16 浅灰色 1:黑色 2:蓝色 3:浅蓝 ...............
     */
     public   void  setRowBgColor( int  rowIndex,  int  color) {
         this .getRow(rowIndex);

        Dispatch shading = Dispatch.get(row,  "Shading" ).toDispatch();

         if  (color >  16  || color <  1 )
            color =  16 ;
        Dispatch
                .put(shading,  "BackgroundPatternColorIndex" ,  new  Variant(color));
    }

     /**
     * 设置指定表格的指定行的背景色
     * 
     * @param tableIndex
     * @param rowIndex
     * @param color
     *            取值范围 0 < color < 17 默认:16 浅灰色 1:黑色 2:蓝色 3:浅蓝 ...............
     */
     public   void  setRowBgColor( int  tableIndex,  int  rowIndex,  int  color) {
         this .getTable(tableIndex);

         this .setRowBgColor(rowIndex, color);
    }

     /**
     * 设置当前选定内容的字体
     * 
     * @param isBold
     *            是否为粗体
     * @param isItalic
     *            是否为斜体
     * @param isUnderLine
     *            是否带下划线
     * @param color
     *            rgb 字体颜色 例如:红色 255,0,0
     * @param size
     *            字体大小 12:小四 16:三号
     * @param name
     *            字体名称 例如:宋体,新宋体,楷体,隶书
     */
     public   void  setFont( boolean  isBold,  boolean  isItalic,  boolean  isUnderLine,
            String color, String size, String name) {
        Dispatch font = Dispatch.get(selection,  "Font" ).toDispatch();
        Dispatch.put(font,  "Name" ,  new  Variant(name));
        Dispatch.put(font,  "Bold" ,  new  Variant(isBold));
        Dispatch.put(font,  "Italic" ,  new  Variant(isItalic));
        Dispatch.put(font,  "Underline" ,  new  Variant(isUnderLine));
        Dispatch.put(font,  "Color" , color);
        Dispatch.put(font,  "Size" , size);
    }

     /**
     * 恢复默认字体 不加粗,不倾斜,没下划线,黑色,小四号字,宋体
     */
     public   void  clearFont() {
         this .setFont( false ,  false ,  false ,  "0,0,0" ,  "12" ,  "宋体" );
    }

     /**
     * 对当前段落进行格式化
     * 
     * @param align
     *            设置排列方式 默认:居左 0:居左 1:居中 2:居右 3:两端对齐 4:分散对齐
     * @param lineSpace
     *            设置行间距 默认:1.0 0:1.0 1:1.5 2:2.0 3:最小值 4:固定值
     */
     public   void  setParaFormat( int  align,  int  lineSpace) {
         if  (align <  0  || align >  4 ) {
            align =  0 ;
        }
         if  (lineSpace <  0  || lineSpace >  4 ) {
            lineSpace =  0 ;
        }

        Dispatch alignment = Dispatch.get(selection,  "ParagraphFormat" )
                .toDispatch();
        Dispatch.put(alignment,  "Alignment" , align);

        Dispatch.put(alignment,  "LineSpacingRule" ,  new  Variant(lineSpace));
    }

     /**
     * 还原段落默认的格式 左对齐,行间距:1.0
     */
     public   void  clearParaFormat() {
         this .setParaFormat( 0 ,  0 );
    }

     /**
     * 创建表格
     * 
     * @param pos
     *            位置
     * @param cols
     *            列数
     * @param rows
     *            行数
     */
     public   void  createTable(String pos,  int  numCols,  int  numRows) {
         if  (find(pos)) {
            Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
            Dispatch range = Dispatch.get(selection,  "Range" ).toDispatch();
            Dispatch newTable = Dispatch.call(tables,  "Add" , range,
                     new  Variant(numRows),  new  Variant(numCols)).toDispatch();
            Dispatch.call(selection,  "MoveRight" );
        }
    }

     /**
     * 在指定行前面增加行
     * 
     * @param tableIndex
     *            word文件中的第N张表(从1开始)
     * @param rowIndex
     *            指定行的序号(从1开始)
     */
     public   void  addTableRow( int  tableIndex,  int  rowIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch rows = Dispatch.get(table,  "Rows" ).toDispatch();
        Dispatch row = Dispatch.call(rows,  "Item" ,  new  Variant(rowIndex))
                .toDispatch();
        Dispatch.call(rows,  "Add" ,  new  Variant(row));
    }

     /**
     * 在第1行前增加一行
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addFirstTableRow( int  tableIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch rows = Dispatch.get(table,  "Rows" ).toDispatch();
        Dispatch row = Dispatch.get(rows,  "First" ).toDispatch();
        Dispatch.call(rows,  "Add" ,  new  Variant(row));
    }

     /**
     * 在最后1行前增加一行
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addLastTableRow( int  tableIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch rows = Dispatch.get(table,  "Rows" ).toDispatch();
        Dispatch row = Dispatch.get(rows,  "Last" ).toDispatch();
        Dispatch.call(rows,  "Add" ,  new  Variant(row));
    }

     /**
     * 增加一行
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addRow( int  tableIndex) {
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch rows = Dispatch.get(table,  "Rows" ).toDispatch();
        Dispatch.call(rows,  "Add" );
    }

     /**
     * 增加一列
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addCol( int  tableIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch cols = Dispatch.get(table,  "Columns" ).toDispatch();
        Dispatch.call(cols,  "Add" ).toDispatch();
        Dispatch.call(cols,  "AutoFit" );
    }

     /**
     * 在指定列前面增加表格的列
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     * @param colIndex
     *            制定列的序号 (从1开始)
     */
     public   void  addTableCol( int  tableIndex,  int  colIndex) {
         // 所有表格
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch cols = Dispatch.get(table,  "Columns" ).toDispatch();
        System.out.println(Dispatch.get(cols,  "Count" ));
        Dispatch col = Dispatch.call(cols,  "Item" ,  new  Variant(colIndex))
                .toDispatch();
         // Dispatch col = Dispatch.get(cols, "First").toDispatch();
        Dispatch.call(cols,  "Add" , col).toDispatch();
        Dispatch.call(cols,  "AutoFit" );
    }

     /**
     * 在第1列前增加一列
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addFirstTableCol( int  tableIndex) {
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch cols = Dispatch.get(table,  "Columns" ).toDispatch();
        Dispatch col = Dispatch.get(cols,  "First" ).toDispatch();
        Dispatch.call(cols,  "Add" , col).toDispatch();
        Dispatch.call(cols,  "AutoFit" );
    }

     /**
     * 在最后一列前增加一列
     * 
     * @param tableIndex
     *            word文档中的第N张表(从1开始)
     */
     public   void  addLastTableCol( int  tableIndex) {
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
         // 要填充的表格
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant(tableIndex))
                .toDispatch();
         // 表格的所有行
        Dispatch cols = Dispatch.get(table,  "Columns" ).toDispatch();
        Dispatch col = Dispatch.get(cols,  "Last" ).toDispatch();
        Dispatch.call(cols,  "Add" , col).toDispatch();
        Dispatch.call(cols,  "AutoFit" );
    }

     /**
     * 从选定内容或插入点开始查找文本
     * 
     * @param toFindText
     *            要查找的文本
     * @return boolean true-查找到并选中该文本,false-未查找到文本
     */
     public   boolean  find(String toFindText) {
         if  (toFindText ==  null  || toFindText.equals( "" ))
             return   false ;
         // 从selection所在位置开始查询
        Dispatch find = word.call(selection,  "Find" ).toDispatch();
         // 设置要查找的内容
        Dispatch.put(find,  "Text" , toFindText);
         // 向前查找
        Dispatch.put(find,  "Forward" ,  "True" );
         // 设置格式
        Dispatch.put(find,  "Format" ,  "True" );
         // 大小写匹配
        Dispatch.put(find,  "MatchCase" ,  "True" );
         // 全字匹配
        Dispatch.put(find,  "MatchWholeWord" ,  "True" );
         // 查找并选中
         return  Dispatch.call(find,  "Execute" ).getBoolean();
    }

     /**
     * 把选定选定内容设定为替换文本
     * 
     * @param toFindText
     *            查找字符串
     * @param newText
     *            要替换的内容
     * @return
     */
     public   boolean  replaceText(String toFindText, String newText) {
         if  (!find(toFindText))
             return   false ;
        Dispatch.put(selection,  "Text" , newText);
         return   true ;
    }
%E
/**
     * 全局替换文本
     * 
     * @param toFindText
     *            查找字符串
     * @param newText
     *            要替换的内容
     */
     public   void  replaceAllText(String toFindText, String newText) {
         while  (find(toFindText)) {
            Dispatch.put(selection,  "Text" , newText);
            Dispatch.call(selection,  "MoveRight" );
        }
    }

     /**
     * 
     * @param toFindText
     *            要查找的字符串
     * @param imagePath
     *            图片路径
     * @return 此函数将字符串替换成图片
     */
     public   boolean  replaceImage(String toFindText, String imagePath) {
         if  (!find(toFindText))
             return   false ;
        Dispatch.call(Dispatch.get(selection,  "InLineShapes" ).toDispatch(),
                 "AddPicture" , imagePath);
         return   true ;
    }

     /**
     * 全局替换图片
     * 
     * @param toFindText
     *            查找字符串
     * @param imagePath
     *            图片路径
     */
     public   void  replaceAllImage(String toFindText, String imagePath) {
         while  (find(toFindText)) {
            Dispatch.call(Dispatch.get(selection,  "InLineShapes" ).toDispatch(),
                     "AddPicture" , imagePath);
            Dispatch.call(selection,  "MoveRight" );
        }
    }

     // ////////////////////////////////////////////////////////
     // //////////////////////////////////////////////////////////
     // /////////////////////////////////////////////////////
     // ///////////////////////////////////////////////////
     // //////////////////////////////////////////////////

     /**
     * 设置当前表格线的粗细 w范围:1<w<13 超过范围设为:w=6
     * 
     * @param w
     */
     /*
     * private void setTableBorderWidth(int w) { if (w > 13 || w < 2) { w = 6; }
     * Dispatch borders = Dispatch.get(table, "Borders").toDispatch(); Dispatch
     * border = null;
     * 
     * /** 设置表格线的粗细 1:代表最上边一条线 2:代表最左边一条线 3:最下边一条线 4:最右边一条线 5:除最上边最下边之外的所有横线
     * 6:除最左边最右边之外的所有竖线 7:从左上角到右下角的斜线 8:从左下角到右上角的斜线
     */
     /*
     * for (int i = 1; i < 7; i++) { border = Dispatch.call(borders, "Item", new
     * Variant(i)) .toDispatch(); Dispatch.put(border, "LineWidth", new
     * Variant(w)); Dispatch.put(border, "Visible", new Variant(true)); } }
     * 
     * 
     * 
     * /** 复制表的最后一行到剪切板
     * 
     * @param tableIndex
     */
     /*
     * public void copyLastRow(int tableIndex) {
     * getRow(getRowsCount(tableIndex)); Dispatch.call(row, "select");
     * Dispatch.call(selection, "Copy"); }
     * 
     * /** 复制表的最后一行并粘贴到下一行(包括行中的数据)
     * 
     * @param tableIndex 表的索引 @param times 粘贴的次数
     */
     /*
     * public void duplicateLastRow(int tableIndex, int times) {
     * this.copyLastRow(tableIndex); for (int i = 0; i < times; i++) {
     * Dispatch.call(selection, "Paste"); } }
     * 
     * /** 查找当前行表格所有行中的某一行
     * 
     * @param rowIndex @return
     */
     public  Dispatch getRow( int  rowIndex) {
         if  (rows ==  null )
             this .getRows();
        row = Dispatch.invoke(rows,  "item" , Dispatch.Method,
                 new  Object[] {  new  Integer(rowIndex) },  new   int [ 1 ])
                .toDispatch();
         return  row;
    }

     public   int  getRowsCount() {
         if  (rows ==  null )
             this .getRows();
         return  Dispatch.get(rows,  "Count" ).getInt();
    }

     /**
     * 得到当前表格的所有的列
     * 
     * @return
     */
     // 需要找到Dispatch对象,这里的Variant(1)不行一定要做成变量
     public  Dispatch getColumns() {
         // this.getTables();
        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant( 1 ))
                .toDispatch();
         return   this .columns = Dispatch.get(table,  "Columns" ).toDispatch();
    }

     /**
     * 得到当前表格的某一列
     * 
     * @param index
     *            列索引
     * @return
     */
     public  Dispatch getColumn( int  columnIndex) {
         if  (columns ==  null )
             this .getColumns();
         return   this .column = Dispatch.call(columns,  "Item" ,
                 new  Variant(columnIndex)).toDispatch();
    }

     /**
     * 得到当前表格的列数
     * 
     * @return
     */
     public   int  getColumnsCount() {
         this .getColumns();

         return  Dispatch.get(columns,  "Count" ).toInt();
    }

     /**
     * 得到指定表格的列数
     * 
     * @param tableIndex
     * @return
     */
     public   int  getColumnsCount( int  tableIndex) {
         this .getTable(tableIndex);

         return   this .getColumnsCount();
    }

     /**
     * 得到表的行数
     * 
     * @param tableIndex
     * @return
     */
     public   int  getRowsCount( int  tableIndex) {
         this .getTable(tableIndex);
         return   this .getRowsCount();
    }

     /**
     * 设置当前表格的所有行的行高
     * 
     * @param rowHeight
     */
     public   void  setRowHeight( float  rowHeight) {
         if  (rowHeight >  0 ) {
             if  (rows ==  null )
                 this .getRows();
            Dispatch.put(rows,  "Height" ,  new  Variant(rowHeight));
        }
    }

     /**
     * 设置指定表格的所有行的行高
     * 
     * @param tableIndex
     * @param rowHeight
     */
     public   void  setRowHeight( int  tableIndex,  float  rowHeight) {
         this .getRows(tableIndex);

         this .setRowHeight(rowHeight);
    }

     /**
     * 设置当前表格指定行的行高
     * 
     * @param rowHeight
     * @param rowIndex
     */
     public   void  setRowHeight( float  rowHeight,  int  rowIndex) {
         if  (rowHeight >  0 ) {
             if  (rows ==  null  || row ==  null ) {
                 this .getRows();
                 this .getRow(rowIndex);
            }

            Dispatch.put(row,  "Height" ,  new  Variant(rowHeight));
        }
    }

     /**
     * 设置指定表格的指定行的行高
     * 
     * @param tableIndex
     * @param rowHeight
     * @param rowIndex
     */
     public   void  setRowHeight( int  tableIndex,  float  rowHeight,  int  rowIndex) {
         this .getTable(tableIndex);

         this .setRowHeight(rowHeight, rowIndex);
    }

     /**
     * 设置当前表格的所有列的列宽
     * 
     * @param columnWidth
     *            列宽 取值范围:10<columnWidth 默认值:120
     */
     public   void  setColumnWidth( float  columnWidth) {
         if  (columnWidth <  11 ) {
            columnWidth =  120 ;
        }
         if  (columns ==  null )
             this .getColumns();
        Dispatch.put(columns,  "Width" ,  new  Variant(columnWidth));

    }

     /**
     * 设置指定表格的所有列的列宽
     * 
     * @param tableIndex
     * @param columnWidth
     */
     public   void  setColumnWidth( int  tableIndex,  float  columnWidth) {
         this .getColumns(tableIndex);

         this .setColumnWidth(columnWidth);
    }

     /**
     * 得到指定表格的多有列
     * 
     * @param tableIndex
     * @return
     */
     public  Dispatch getColumns( int  tableIndex) {
        getTable(tableIndex);

         return   this .getColumns();
    }

     /**
     * 复制表的某一行
     * 
     * @param tableIndex
     * @param rowIndex
     */
     public   void  copyRow( int  tableIndex,  int  rowIndex) {
        getTable(tableIndex);
        getRows();
        row = getRow(rowIndex);
        Dispatch.call(row,  "Select" );
        Dispatch.call(selection,  "Copy" );
    }

     /**
     * 查找表的全部行
     * 
     * @param tableIndex
     * @return
     */
     public  Dispatch getRows( int  tableIndex) {
        getTable(tableIndex);

         return   this .getRows();
    }

     /**
     * 查找当前表的全部行
     * 
     * @return
     * 
     * 
     */
     // 需要找到Dispatch对象,这里的Variant(1)不行一定要做成变量
     public  Dispatch getRows() {

        Dispatch tables = Dispatch.get(doc,  "Tables" ).toDispatch();
        Dispatch table = Dispatch.call(tables,  "Item" ,  new  Variant( 2 ))
                .toDispatch();
        rows = Dispatch.get(table,  "rows" ).toDispatch();
         return  rows;
    }

     /**
     * 查找指定表格的单元格
     * 
     * @param tableIndex
     * @param cellRow
     * @param cellColumn
     * @return
     */
     public  Dispatch getCell( int  tableIndex,  int  cellRow,  int  cellColumn) {
        getTable(tableIndex);

         return  getCell(cellRow, cellColumn);
    }

     /**
     * 查找当前所在表的某单元格
     * 
     * @param cellRow
     * @param cellColumn
     * @return
     * @throws Dispatch
     *             object expected
     */
     public  Dispatch getCell( int  cellRow,  int  cellColumn) {

         return  cell = Dispatch.call(table,  "Cell" ,  new  Variant(cellRow),
                 new  Variant(cellColumn)).toDispatch();
    }

     /**
     * 保存文档并退出程序
     * 
     * @param fileName
     *            保存的文件名称
     * @param isSave
     *            是否保存修改
     * @throws Exception
     */

     /*
     * public void saveDocAndExit(File fileName, boolean isSave) throws
     * Exception { if (fileName != null) { if (!fileName.exists()) {
     * fileName.createNewFile(); } Dispatch wordBasic = (Dispatch)
     * Dispatch.call(word, "WordBasic").getDispatch();
     * Dispatch.invoke(wordBasic, "FileSaveAs", Dispatch.Method, new Object[] {
     * fileName.getPath(), new Variant(true), new Variant(false) }, new int[1]); }
     * 
     * Dispatch.call(document, "Close", new Variant(isSave));
     * Dispatch.call(word, "Quit");
     * 
     * word = null; documents = null; document = null; selection = null; }
     */
     /**
     * 合并当前表格指定的单元格 如果需要一次合并几个单元格只需要指出第一个单元格和最后一个单元格
     * 
     * @param fstCellRowIndex
     *            第一个单元格的行索引
     * @param fstCellColIndex
     *            第一个单元格的列索引
     * @param secCellRowIndex
     *            第二个单元格的行索引
     * @param secCellColIndex
     *            第二个单元格的列索引
     */
     public   void  mergeCell( int  fstCellRowIndex,  int  fstCellColIndex,
             int  secCellRowIndex,  int  secCellColIndex) {
        Dispatch fstCell = Dispatch.call(table,  "Cell" ,
                 new  Variant(fstCellRowIndex),  new  Variant(fstCellColIndex))
                .toDispatch();
        Dispatch secCell = Dispatch.call(table,  "Cell" ,
                 new  Variant(secCellRowIndex),  new  Variant(secCellColIndex))
                .toDispatch();
        Dispatch.call(fstCell,  "Merge" , secCell);
    }

     /**
     * 合并当前表格指定的列
     * 
     * @param columnIndex
     *            列索引
     */
     public   void  mergeColumn( int  columnIndex) {
         this .getColumn(columnIndex);

        Dispatch cells = Dispatch.get(column,  "Cells" ).toDispatch();

        Dispatch.call(cells,  "Merge" );
    }

     /**
     * 合并当前表格的指定的行
     * 
     * @param rowIndex
     */
     public   void  mergeRow( int  rowIndex) {
         this .getRow(rowIndex);

        Dispatch cells = Dispatch.get(row,  "Cells" ).toDispatch();

        Dispatch.call(cells,  "Merge" );
    }

     /**
     * 合并指定表格的指定的行
     * 
     * @param tableIndex
     * @param rowIndex
     *            行索引
     */
     public   void  mergeRow( int  tableIndex,  int  rowIndex) {
         this .getTable(tableIndex);

         this .mergeRow(rowIndex);
    }

     /**
     * 合并指定表格的指定的列
     * 
     * @param tableIndex
     * @param columnIndex
     */
     public   void  mergeColumn( int  tableIndex,  int  columnIndex) {
         this .getTable(tableIndex);

         this .mergeColumn(columnIndex);
    }

     /**
     * 合并指定表格的指定的单元格
     * 
     * @param tableIndex
     * @param fstCellRowIndex
     * @param fstCellColIndex
     * @param secCellRowIndex
     * @param secCellColIndex
     */
     public   void  mergeCell( int  tableIndex,  int  fstCellRowIndex,
             int  fstCellColIndex,  int  secCellRowIndex,  int  secCellColIndex) {
         this .getTable(tableIndex);

         this .mergeCell(fstCellRowIndex, fstCellColIndex, secCellRowIndex,
                secCellColIndex);
    }

     public  Dispatch getRangeParagraphs()  throws  Exception {
         return  Dispatch.get(range,  "Paragraphs" ).toDispatch();
    }

     public  Dispatch getParagraph( int  tIndex)  throws  Exception {

         return  Dispatch.call(paragraphs,  "Item" ,  new  Variant(tIndex))
                .toDispatch();
    }

     public  Dispatch getParagraphRange()  throws  Exception {

         return  Dispatch.get(paragraph,  "range" ).toDispatch();
    }

     public  String getRangeText()  throws  Exception {
         return  Dispatch.get(range,  "Text" ).toString();
    }

     public   int  getParagraphsCount()  throws  Exception {
         int  count =  0 ;

        count = Dispatch.get(paragraphs,  "Count" ).toInt();

         return  count;
    }

     public   static   void  main(String[] args) {
         long  time1 = System.currentTimeMillis();
         int  i =  0 ;
        ComThread.InitSTA(); // 初始化com的线程,非常重要!!使用结束后要调用 realease方法
         // Instantiate objWord //Declare word object
        ActiveXComponent objWord =  new  ActiveXComponent( "Word.Application" );
         // Assign a local word object
        Dispatch wordObject = (Dispatch) objWord.getObject();
         // Create a Dispatch Parameter to show the document that is opened
        Dispatch.put((Dispatch) wordObject,  "Visible" ,  new  Variant( true )); // new
                                                                             // Variant(true)表示word应用程序可见
         // Instantiate the Documents Property
        Dispatch documents = objWord.getProperty( "Documents" ).toDispatch();  // documents表示word的所有文档窗口,(word是多文档应用程序)
         // Add a new word document, Current Active Document
         // Dispatch document = Dispatch.call(documents, "Add").toDispatch(); //
         // 使用Add命令创建一个新文档,用Open命令可以打开一个现有文档

         for  ( int  n =  0 ; n <=  10 ; n++) {
            Dispatch document = Dispatch.call(documents,  "Open" ,  "C:\\ABC.doc" )
                    .toDispatch();
            Dispatch wordContent = Dispatch.get(document,  "Content" )
                    .toDispatch();  // 取得word文件的内容
            Dispatch.call(wordContent,  "InsertAfter" ,  "这里是一个段落的内容" ); // 插入一个段落
            Dispatch paragraphs = Dispatch.get(wordContent,  "Paragraphs" )
                    .toDispatch();  // 所有段落
             int  paragraphCount = Dispatch.get(paragraphs,  "Count" ).toInt();  // 一共的段落数
             // 找到刚输入的段落,设置格式
            Dispatch lastParagraph = Dispatch.call(paragraphs,  "Item" ,
                     new  Variant(paragraphCount)).toDispatch();  // 最后一段
            Dispatch lastParagraphRange = Dispatch.get(lastParagraph,  "Range" )
                    .toDispatch();
            Dispatch font = Dispatch.get(lastParagraphRange,  "Font" )
                    .toDispatch();
            Dispatch.put(font,  "Bold" ,  new  Variant( true ));  // 设置为黑体
            Dispatch.put(font,  "Italic" ,  new  Variant( true ));  // 设置为斜体
            Dispatch.put(font,  "Name" ,  new  Variant( "宋体" ));  //
            Dispatch.put(font,  "Size" ,  new  Variant( 18 ));  // 小四
            Dispatch frames = Dispatch.call(wordContent,  "Frames" ).toDispatch();
        
             int  frameCount = Dispatch.call(frames,  "Count" ).toInt();
            System.out.println( ""  + frameCount + n +  "\n" );

            Dispatch.call(document,  "SaveAs" ,  new  Variant( "C:\\" + (i++)+ " abc.doc"));  // 保存一个新文档

            Dispatch.call(document,  "Close" ,  new  Variant( true ));
        }
         //
         // end for
        Dispatch.call(objWord,  "Quit" );
        ComThread.Release(); // 释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理

         long  time2 = System.currentTimeMillis();
         double  time3 = (time2 - time1) /  1000.0 ;
        System.out.println( "\n"  + time3 +  " 秒." );

    }
}

 

分享到:
评论

相关推荐

    jacob读取word表格

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

    jacob 操作word 文档详解

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

    jacob操作word(超详细)

    1、把jacob.dll文件,复制到 windows\system32 目录下。(注:我用的时候这个方法不能运行) 2、 把jacob.dll放入 Java\jdk1.5.0_06\jre\bin目录下.把jacob.jar放入 Java\jdk1.5.0_0\jre\lib\ext 目录下.可以正常...

    jacob操作word实例

    jacob操作word实例,包括文本、表格的读写操作

    jacob操作word文件

    Jacob库在Java中用于操作Microsoft Office应用程序,如Word、Excel等。这个库是Java和COM接口之间的桥梁,允许Java程序能够调用COM组件,从而实现对Office文档的创建、编辑和格式化等功能。在给定的代码片段中,`...

    JACOB Java操作word 优秀

    java操作word 超简单实用:第一步: 引入包jacob.jar 第二步:参考工具类MsWordTool.java 含概基本WORD 所有操作方法 【特别难点】解决实例: 1)word书签内容替换后,书签会丢失问题 2)word定点批量插入图片...

    Jacob 1.16 操作Word表格

    在本教程中,我们将重点讨论如何使用Jacob 1.16-M1版本来操作Word文档中的表格。 首先,安装Jacob库。下载并解压提供的`jacob-1.16-M1`压缩包,里面包含了Jacob的jar文件。将这个jar文件添加到你的Java项目类路径中...

    使用jacob通过word样表生成制式表格

    总结来说,jacob库为Java开发者提供了一种便捷的方式来操作Word文档,包括文字替换、图片插入和表格动态填充。虽然在转换为PDF方面需要借助其他工具,但结合其他库,可以构建完整的自动化文档处理流程。在进行此类...

    JACOB操作word和excel示例

    本文将深入探讨如何使用Jacob库来操作Word和Excel,通过提供的示例文档,我们将理解如何进行文件转换和其他操作。 首先,Jacob全称为Java COM Bridge,是一个Java到COM(Component Object Model)桥接器,它使得...

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

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

    jacob生成word目录

    虽然AsposeWord也能生成目录,但其使用方式和JACOB不同,可能更适合不需要交互式操作或对性能有较高要求的场景。 总的来说,使用JACOB或者AsposeWord这样的工具,开发者可以在Java环境中自动化处理Word文档,包括...

    jacob操作word资料

    本篇文章将深入探讨如何使用Jacob来操作Word资料。 一、Jacob库的安装与配置 首先,你需要下载Jacob的JAR文件,将其添加到你的项目类路径中。如果是Maven项目,可以在pom.xml文件中添加对应的依赖。然后,确保你的...

    jacob操作word转换成pdf

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

    用jacob操作word书签

    ### 使用Jacob操作Word书签的知识点 #### 一、Jacob简介 Jacob(Java COM Bridge)是一种用于在Java中调用COM对象的库。它提供了一种简单有效的方式,使得Java程序能够与Windows平台上的COM组件进行交互。对于需要...

    Jacob 操作WORD 完整实例 附带JAR DLL

    了解以上基本步骤后,你便可以利用Jacob进行更复杂的Word操作,比如处理表格、插入图片、应用样式等。不过,需要注意的是,由于Jacob依赖于Windows的COM机制,所以它只适用于Windows环境,不适用于Linux或Mac OS等...

    jacob操作word文档

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

    一次jacob操作word的总结

    本文将深入探讨如何使用Jacob在服务器端操作Word文档。 首先,导入必要的包,包括`com.setpower.sysfun.service`、`java.io.File`、`java.util.HashMap`、`java.util.Iterator`、`java.util.List`以及Jacob的`...

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

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

    jacob操作word,excel(图表,表格等)代码

    在这个主题下,我们将深入探讨如何使用Jacob来操作Word和Excel,特别是在生成报告、处理数据和展现图表方面。 1. **Jacob简介**: Jacob全称为Java COM Bridge,它通过JNI(Java Native Interface)技术实现了Java...

    有关jacob的word操作研究

    在本文中,我们将深入探讨如何使用Jacob进行Word文档的操作。 首先, Jacob的核心在于ActiveXComponent和Dispatch类。ActiveXComponent是Jacob提供用来创建和访问COM对象的类,例如在Java中创建一个Word应用实例。...

Global site tag (gtag.js) - Google Analytics