日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jacob操作Word文档转换-XXOO

發布時間:2024/3/12 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jacob操作Word文档转换-XXOO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

JACOB一個Java-COM中間件.通過這個組件你可以在Java應用程序中調用COM組件和Win32程序庫。


一、準備

<!--添加本地的jacob.jar包--><dependency><groupId>com.jacob</groupId><artifactId>jacob</artifactId><version>1.19</version><scope>system</scope><systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath></dependency>

jacob.jar 下載鏈接?https://mvnrepository.com/artifact/com.jacob/jacob/1.10?

或者??https://download.csdn.net/download/qq_35731570/13117233

二、代碼示例

1.JacobUtil 工具類

package com.yl.util;import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; import org.springframework.stereotype.Component;import java.io.*;/**** @author yl* @date 2020/5/22* Jacob 操作API*/ @Component public class JacobUtil {/*** word文檔*/private Dispatch doc;/*** word運行程序對象*/private ActiveXComponent word;/*** 所有word文檔集合*/private Dispatch documents;/*** 選定的范圍或插入點*/private Dispatch selection;private boolean saveOnExit = true;public JacobUtil() {ComThread.InitSTA();if (word == null) {word = new ActiveXComponent("Word.Application");word.setProperty("Visible", new Variant(false));}if (documents == null){documents = word.getProperty("Documents").toDispatch();}}/*** 設置退出時參數** @param saveOnExit* boolean true-退出時保存文件,false-退出時不保存文件*/public void setSaveOnExit(boolean saveOnExit) {this.saveOnExit = saveOnExit;}/*** 創建一個新的word文檔**/public void createNewDocument() {doc = Dispatch.call(documents, "Add").toDispatch();selection = Dispatch.get(word, "Selection").toDispatch();}/*** 打開一個已存在的文檔** @param docPath*/public void openDocument(String docPath) {closeDocument();doc = Dispatch.call(documents, "Open", docPath).toDispatch();selection = Dispatch.get(word, "Selection").toDispatch();}/*** 把選定的內容或插入點向上移動** @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 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 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");}}/*** 把插入點移動到文件首位置**/public void moveStart() {if (selection == null) {selection = Dispatch.get(word, "Selection").toDispatch();}Dispatch.call(selection, "HomeKey", new Variant(6));}/*** 把插入點移動到文件結尾位置**/public void moveEnd() {if (selection == null)selection = Dispatch.get(word, "Selection").toDispatch();Dispatch.call(selection, "EndKey", new Variant(6));}/*** 從選定內容或插入點開始查找文本** @param toFindText* 要查找的文本* @return boolean true-查找到并選中該文本,false-未查找到文本*/public boolean find(String toFindText) {if (toFindText == null || toFindText.equals("")){return false;}// 從selection所在位置開始查詢Dispatch find = ActiveXComponent.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();}/*** 函數名: replaceStr 描述:改變內容** @param strToFind* @param strToReplace* @return* @exception*/public void replaceStr(String strToFind, String strToReplace) {// 提取word文檔內容?象Object content = Dispatch.get(this.doc, "Content").toDispatch();// 提取find?象,也就?找替?的那個?象Object finder = Dispatch.get((Dispatch) content, "Find").toDispatch();boolean rt = true;Variant f = new Variant(false);while (rt) {rt = Dispatch.invoke((Dispatch) finder, "Execute", Dispatch.Method,new Object[] { strToFind, f, f, f, f, f, f, f, f,strToReplace, new Variant(true) }, new int[1]).toBoolean();}}/*** 把選定選定內容設定為替換文本** @param toFindText* 查找字符串* @param newText* 要替換的內容* @return*/public boolean replaceText(String toFindText, String newText) {if (!find(toFindText)) {return false;}Dispatch.put(selection, "Text", newText);return true;}/*** 全局替換文本** @param toFindText* 查找字符串* @param newText* 要替換的內容*/public void replaceAllText(String toFindText, String newText) {while (find(toFindText)) {Dispatch.put(selection, "Text", newText);Dispatch.call(selection, "MoveRight");}}/** *//*** 在當前插入點插入字符串** @param newText* 要插入的新字符串*/public void insertText(String newText) {Dispatch.put(selection, "Text", newText);}/** *//*** 在當前插入點插入字符串** @param newText 要插入的新字符串*/public void insertAfterText(String newText) {moveEnd();// 取得當前文檔的內容Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch();// 插入特殊符定位插入點Dispatch.call(wordContent, "InsertAfter", newText);}/*** 在末尾插入回車**/public void insertNewParagraph() {moveEnd();Dispatch.call(selection, "TypeParagraph");}/**** @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");}}/** *//*** 在當前插入點插入圖片** @param imagePath* 圖片路徑*/public void insertImage(String imagePath) {Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(),"AddPicture", imagePath);}/** *//*** 合并單元格** @param tableIndex* @param fstCellRowIdx* @param fstCellColIdx* @param secCellRowIdx* @param secCellColIdx*/public void mergeCell(int tableIndex, int fstCellRowIdx, int fstCellColIdx,int secCellRowIdx, int secCellColIdx) {// 所有表格Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();// 要填充的表格Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex)).toDispatch();Dispatch fstCell = Dispatch.call(table, "Cell",new Variant(fstCellRowIdx), new Variant(fstCellColIdx)).toDispatch();Dispatch secCell = Dispatch.call(table, "Cell",new Variant(secCellRowIdx), new Variant(secCellColIdx)).toDispatch();Dispatch.call(fstCell, "Merge", secCell);}/** *//*** 在指定的單元格里填寫數據** @param tableIndex* @param cellRowIdx* @param cellColIdx* @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);}/** *//*** 在指定的單元格里填寫數據** @param tableIndex* @param cellRowIdx* @param cellColIdx* @param txt*/public void putTxtToCellCenter(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 alignment = Dispatch.get(selection, "ParagraphFormat").toDispatch();Dispatch.put(alignment, "Alignment", "3");Dispatch.put(selection, "Text", txt);}/** *//*** 在當前文檔拷貝剪貼板數據** @param pos*/public void pasteExcelSheet(String pos) {moveStart();if (this.find(pos)) {Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();Dispatch.call(textRange, "Paste");}}/** *//*** 在當前文檔指定的位置拷貝表格** @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");if (this.find(pos)) {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");if (this.find(pos)) {Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();Dispatch.call(textRange, "Paste");}} catch (Exception e) {e.printStackTrace();} finally {if (doc2 != null) {Dispatch.call(doc2, "Close", new Variant(saveOnExit));doc2 = null;}}}/** *//*** 在當前文檔指定的位置拷貝來自另一個文檔中的圖片** @param anotherDocPath* 另一個文檔的磁盤路徑* @param shapeIndex* 被拷貝的圖片在另一格文檔中的位置* @param pos* 當前文檔指定的位置*/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");if (this.find(pos)) {Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();Dispatch.call(textRange, "Paste");}} catch (Exception e) {e.printStackTrace();} finally {if (doc2 != null) {Dispatch.call(doc2, "Close", new Variant(saveOnExit));doc2 = null;}}}/*** 在當前文檔末尾拷貝來自另一個文檔中的段落** @param anotherDocPath 另一個文檔的磁盤路徑* @param paragraphIndex 被拷貝的段落在另一格文檔中的序號(從1開始)*/public void copyParagraphFromAnotherDoc(String anotherDocPath, int paragraphIndex) {// 取得當前文檔的內容Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch();// 插入特殊符定位插入點Dispatch.call(wordContent, "InsertAfter", "$selection$");copyParagraphFromAnotherDoc(anotherDocPath, paragraphIndex,"$selection$");}/*** 在當前文檔指定的位置拷貝來自另一個文檔中的段落** @param anotherDocPath 另一個文檔的磁盤路徑* @param paragraphIndex 被拷貝的段落在另一格文檔中的序號(從1開始)* @param pos 當前文檔指定的位置*/public void copyParagraphFromAnotherDoc(String anotherDocPath, int paragraphIndex, String pos) {Dispatch doc2 = null;try {doc2 = Dispatch.call(documents, "Open", anotherDocPath).toDispatch();Dispatch paragraphs = Dispatch.get(doc2, "Paragraphs").toDispatch();Dispatch paragraph = Dispatch.call(paragraphs, "Item",new Variant(paragraphIndex)).toDispatch();Dispatch range = Dispatch.get(paragraph, "Range").toDispatch();Dispatch.call(range, "Copy");if (this.find(pos)) {Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();Dispatch.call(textRange, "Paste");}} catch (Exception e) {e.printStackTrace();} finally {if (doc2 != null) {Dispatch.call(doc2, "Close", new Variant(saveOnExit));doc2 = null;}}}/*** 在當前文檔末尾拷貝來自另外個文檔中的表格** @param anotherDocPath 另一個文檔的磁盤路徑* @param tableIndex 被拷貝的表格在word文檔中所處的位置(從1開始)*/public void copyTable2(String anotherDocPath, int tableIndex) {// 取得當前文檔的內容Dispatch wordContent = Dispatch.get(doc, "Content").toDispatch();// 插入特殊符定位插入點Dispatch.call(wordContent, "InsertAfter", "$selection$");copyTableFromAnotherDoc(anotherDocPath, tableIndex, "$selection$");}/*** 創建表格** @param pos* 位置* @param numCols* 列數* @param numRows* 行數*/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 bold* @param italic* @param underLine* 下劃線* @param colorSize* 字體顏色* @param size* 字體大小* @param name* 字體名稱*/public void setFont(boolean bold, boolean italic, boolean underLine,String colorSize, String size, String name) {Dispatch font = Dispatch.get(selection, "Font").toDispatch();Dispatch.put(font, "Name", new Variant(name));Dispatch.put(font, "Bold", new Variant(bold));Dispatch.put(font, "Italic", new Variant(italic));Dispatch.put(font, "Underline", new Variant(underLine));Dispatch.put(font, "Color", colorSize);Dispatch.put(font, "Size", size);}public void setFontCenter(String name) {Dispatch font = Dispatch.get(selection, "Font").toDispatch();Dispatch alignment = Dispatch.get(selection, "ParagraphFormat").toDispatch();Dispatch.put(alignment, "Alignment", "3");Dispatch.call(selection, "TypeText", name);}/** *//*** 文件保存或另存為** @param savePath 保存或另存為路徑** word 保存或另存為 word* Dispatch.invoke(this.doc, "SaveAs", Dispatch.Method, new Object[] {* savePath, new Variant(0) }, new int[1]);*/public void save(String savePath, int format) {/*** Dispatch.call(doc, "SaveAs", savePath);* Dispatch.call(Dispatch.call(word, "WordBasic").getDispatch(),* "FileSaveAs", savePath);*/// word 保存或另存為 wordDispatch.invoke(this.doc, "SaveAs", Dispatch.Method, new Object[] {savePath, new Variant(format) }, new int[1]);}public void saveCall2(String savePath) {Dispatch.call(Dispatch.call(word, "WordBasic").getDispatch(),"FileSaveAs", savePath);}public void saveCall(String savePath, int format) {Dispatch.call(doc, "SaveAs", savePath, format);}/** *//*** 關閉當前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;ComThread.Release();}/** *//*** 打印當前word文檔**/public void printFile() {if (doc != null) {Dispatch.call(doc, "PrintOut");}}/** *//*** 刪除一行** @param tableIndex* word文檔中的第N張表(從1開始)*/public void delRow(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();Object temp1 = Dispatch.get(rows, "Count");String temp2 = temp1.toString();int count = Integer.parseInt(temp2);while (count > 1) {Dispatch row = Dispatch.get(rows, "Last").toDispatch();Dispatch.call(row, "Delete");rows = Dispatch.get(table, "Rows").toDispatch();temp1 = Dispatch.get(rows, "Count");temp2 = temp1.toString();count = Integer.parseInt(temp2);}}public void setProp(String sName, String sValue) {Dispatch props = Dispatch.get(doc, "CustomDocumentProperties").toDispatch();Dispatch prop = Dispatch.call(props, "Item", sName).toDispatch();String sOldVal = Dispatch.get(prop, "Value").toString();if (!sOldVal.equals(sValue)) {Dispatch.put(prop, "Value", sValue);}}/** *//*** @param nType:* 1, number; 2,bool; 3,date; 4,str;*/public void addProp(String sName, int nType, String sValue) {Dispatch props = Dispatch.get(doc, "CustomDocumentProperties").toDispatch();Dispatch prop = null;try {prop = Dispatch.call(props, "Item", sName).toDispatch();} catch (Exception e) {prop = null;}if (prop != null) {return;}// 1, number; 2,bool; 3,date; 4,str;prop = Dispatch.call(props, "Add", sName, false, nType, sValue).toDispatch();Dispatch.put(prop, "Value", sValue);}public String getProp(String sName) {String sValue = null;Dispatch props = Dispatch.get(doc, "CustomDocumentProperties").toDispatch();Dispatch prop = Dispatch.call(props, "Item", sName).toDispatch();sValue = Dispatch.get(prop, "Value").toString();@SuppressWarnings("unused")String sType = Dispatch.get(prop, "Type").toString();try {Dispatch prop0 = Dispatch.call(doc, "CustomDocumentProperties",sName).toDispatch();sValue = Dispatch.get(prop0, "Value").toString();} catch (Exception e) {e.printStackTrace();}return sValue;}public void fack_change() {Dispatch _sel = Dispatch.call(doc, "Range", 0, 0).toDispatch();Dispatch.call(_sel, "InsertBefore", "A");Dispatch.call(_sel, "Select");Dispatch.call(_sel, "Delete");}/*** 拷貝Word文檔* @param src* @param dest*/public void copyWordFile(String src, String dest){InputStream is=null;OutputStream os=null;try {is=new BufferedInputStream(new FileInputStream(src));os=new BufferedOutputStream(new FileOutputStream(dest));byte[] b=new byte[256];int len=0;try {while((len=is.read(b))!=-1){os.write(b,0,len);}os.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(is!=null){try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(os!=null){try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

2.Word文檔轉其他-操作示例

package com.yl.test;import com.yl.util.JacobUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired;import java.io.File; import java.time.LocalDate; import java.time.LocalDateTime;/*** Word文檔轉其他* @author yl* @date 2020/5/22*/ @Slf4j public class WordConvertOther {@Autowiredprivate JacobUtil jacobUtil = new JacobUtil();/*** WORD 轉 PDF 格式*/private static final int WORD_TO_PDF_FORMAT_ = 17;/*** WORD 轉 XML 格式*/private static final int WORD_TO_XML_FORMAT_ = 11;/*** WORD 轉 HTML 格式*/private static final int WORD_TO_HTML_FORMAT_ = 8;/*** WORD 另存 格式*/private static final int WORD_TO_WORD_FORMAT_ = 0;/*** WORD 轉 PDF* @param fromFileName* @param toFileName*/public void wordToPDF(String fromFileName, String toFileName){try{log.info("word 文檔路徑=, {}, \t pdf文檔路徑=, {}", fromFileName, toFileName);// 打開文檔jacobUtil.openDocument(fromFileName);// 開始轉換jacobUtil.save(toFileName, WORD_TO_PDF_FORMAT_);}catch (Exception e){e.printStackTrace();}finally {// 關閉文檔jacobUtil.closeDocument();// 關閉程序jacobUtil.close();}}/*** WORD 轉 HTML* @param fromFileName* @param toFileName*/public void wordToHTML(String fromFileName, String toFileName){try{log.info("word 文檔路徑=, {}, \t html文檔路徑=, {}", fromFileName, toFileName);// 打開文檔jacobUtil.openDocument(fromFileName);// 開始轉換jacobUtil.save(toFileName, WORD_TO_HTML_FORMAT_);}catch (Exception e){e.printStackTrace();}finally {// 關閉文檔jacobUtil.closeDocument();// 關閉程序jacobUtil.close();}}/*** WORD 轉 XML* @param fromFileName* @param toFileName*/public void wordToXML(String fromFileName, String toFileName){try{log.info("word 文檔路徑=, {}, \t xml文檔路徑=, {}", fromFileName, toFileName);// 打開文檔jacobUtil.openDocument(fromFileName);// 開始轉換jacobUtil.save(toFileName, WORD_TO_XML_FORMAT_);}catch (Exception e){e.printStackTrace();}finally {// 關閉文檔jacobUtil.closeDocument();// 關閉程序jacobUtil.close();}}/*** WORD 另存* @param fromFileName* @param toFileName*/public void wordToSave(String fromFileName, String toFileName){try{log.info("word 文檔路徑=, {}, \t 新word文檔路徑=, {}", fromFileName, toFileName);// 打開文檔jacobUtil.openDocument(fromFileName);// 開始轉換jacobUtil.save(toFileName, WORD_TO_WORD_FORMAT_);// 替換內容jacobUtil.replaceAllText("東芝電梯", "著水電站");// 再次轉換jacobUtil.save(toFileName, WORD_TO_WORD_FORMAT_);}catch (Exception e){e.printStackTrace();}finally {// 關閉文檔jacobUtil.closeDocument();// 關閉程序jacobUtil.close();}}/*** 創建Word文檔* @param fromFileName* @param toFileName*/public void createWord(String fromFileName, String toFileName){try{log.info("createWord 文檔路徑=, {}, \t 新word文檔路徑=, {}", fromFileName, toFileName);// 獲取臨時文件log.info("創建臨時文件");String proDir = System.getProperty("user.dir") +"/springboot-jacob/src/main/resources";String tempFileName = proDir +"/temp/"+System.currentTimeMillis()+"-WJZ_Apply.doc";// 模板文件1String modelOne = proDir +"/fromFiles/2020-05-22-0922147777meetingInfo.doc";// 模板文件2String modelTwo = proDir +"/fromFiles/2020-05-22-0922147777meetingInfomeetingCopytemp.doc";// 復制模板1到臨時文件jacobUtil.copyWordFile(modelOne, tempFileName);// 打開臨時文件log.info("打開臨時文件");jacobUtil.openDocument(tempFileName);// 替換值// 時間jacobUtil.replaceAllText("${meeting_date}$", "2020-07-10 08:56:26");// 地點jacobUtil.replaceAllText("${meeting_address}$", "上海寶山區");// 出席者jacobUtil.replaceAllText("${meeting_attend_dept}$", "程序員XX");// 復制模板2到臨時文件jacobUtil.copyParagraphFromAnotherDoc(modelTwo, 1);// 插入數據String temp;for (int i = 0; i < 100; i++) {// 插入標識符jacobUtil.insertAfterText("${WordContent}$");// 替換標識符temp = "本月回復:催款人" + i+ " 拖欠原因" + i+ " 現場動態描述" + i+ " 本月工作實施記錄" + i+ " 客戶意見" + i+ " 代理店意見" + i+ " 代理店意見" + i;log.info("WordContent --- temp , {}", temp);jacobUtil.moveStart();jacobUtil.replaceAllText(temp, "${WordContent}$");// 在末尾插入回車jacobUtil.insertNewParagraph();jacobUtil.moveEnd();// 日期jacobUtil.insertAfterText("${Word_Time}$");LocalDate today = LocalDate.now();int year = today.getYear();int month = today.getMonthValue();int day = today.getDayOfMonth();temp = year + "年"+ month + "月"+ day + "日" + "會議記錄:";log.info("Word_Time --- temp , {}", temp);jacobUtil.moveStart();jacobUtil.replaceAllText(temp, "${Word_Time}$");// 在末尾插入回車jacobUtil.insertNewParagraph();jacobUtil.moveEnd();jacobUtil.copyParagraphFromAnotherDoc(toFileName, 2);// COPY 表格jacobUtil.copyTable2(tempFileName, 1);jacobUtil.insertNewParagraph();log.info("執行 "+i+" 次 , "+System.currentTimeMillis());}}catch (Exception e){e.printStackTrace();}finally {// 關閉文檔jacobUtil.closeDocument();// 關閉程序jacobUtil.close();}}public static void main(String[] args) throws Exception{String proDir = System.getProperty("user.dir") +"/springboot-jacob/src/main/resources";WordConvertOther wordConvertOther = new WordConvertOther();String fromFileName = proDir +"/fromFiles/2020-05-22-0922147777meetingInfo.doc";String toFileName = proDir +"/toFiles/"+System.currentTimeMillis()+"-meetingInfo.doc";wordConvertOther.createWord(fromFileName, toFileName);// String fromFileName = proDir +"/fromFiles/2020-05-22-0922147777WJZ_Apply.doc"; // // // WORD 轉 PDF 自身office不支持 // String toPdfFileName = proDir +"/toFiles/"+System.currentTimeMillis()+"-WJZ_Apply.pdf"; // wordConvertOther.wordToPDF(fromFileName, toPdfFileName); // // // WORD 轉 HTML OK // String toHtmlFileName = proDir +"/toFiles/"+System.currentTimeMillis()+"-WJZ_Apply.html"; // wordConvertOther.wordToHTML(fromFileName, toHtmlFileName); // // // WORD 轉 HTML OK // String toXmlFileName = proDir +"/toFiles/"+System.currentTimeMillis()+"-WJZ_Apply.xml"; // wordConvertOther.wordToXML(fromFileName, toXmlFileName); // // // WORD 另存 OK // String toWordFileName = proDir +"/toFiles/"+System.currentTimeMillis()+"-WJZ_Apply.doc"; // wordConvertOther.wordToSave(fromFileName, toWordFileName);} }

以上

總結

以上是生活随笔為你收集整理的Jacob操作Word文档转换-XXOO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日批视频在线观看免费 | 综合伊人久久 | 日韩av影视| 天天爽夜夜爽精品视频婷婷 | 成人动漫精品一区二区 | 成人h在线播放 | 欧美日韩不卡一区二区三区 | 少妇视频一区 | 精品无人国产偷自产在线 | 亚洲精品视频免费观看 | 在线播放日韩 | 国产精品视频一二三 | 亚洲精品乱码久久久久久写真 | 亚洲精品国产精品国自产在线 | 99久久久国产精品免费99 | 日本久久久亚洲精品 | 五月婷婷视频在线 | 国产精品99久久久久久宅男 | 天天色婷婷 | 2019中文字幕第一页 | 色婷婷综合久久久 | 一级黄色片在线播放 | 亚洲va韩国va欧美va精四季 | 在线免费观看国产黄色 | 亚洲影院天堂 | 欧美成人91 | 97干com| 中文字幕在线观看三区 | 日韩在观看线 | 美女视频黄,久久 | 91精品欧美一区二区三区 | 日韩激情网 | 亚洲欧洲国产日韩精品 | 少妇自拍av | 国产日韩欧美在线免费观看 | 激情动态 | 在线免费黄色 | 激情视频二区 | 久久综合给合久久狠狠色 | 精品美女在线观看 | 91av电影在线观看 | 天天操操操操操 | 色91在线视频 | 中文字幕电影在线 | 国产999精品久久久久久 | 欧美一进一出抽搐大尺度视频 | 国产免费又爽又刺激在线观看 | 久久综合毛片 | 欧美成人91 | 婷婷色伊人 | 99视频播放 | 国模视频一区二区 | 91九色蝌蚪视频 | 久久毛片高清国产 | 98超碰人人 | 久久草精品 | 中文字幕字幕中文 | 17videosex性欧美 | 九九欧美视频 | 精品产品国产在线不卡 | 久久经典视频 | 日韩精品免费在线视频 | 国产精品永久免费在线 | 国产区高清在线 | 久久久99精品免费观看乱色 | 狠狠躁日日躁狂躁夜夜躁av | 久久色网站 | 亚洲资源 | 91传媒免费在线观看 | 99精品国产免费久久 | 99久久精品视频免费 | 久久综合久久88 | av丝袜在线 | 久青草视频在线观看 | 黄网站色视频免费观看 | 视频在线亚洲 | 九九色综合 | 亚洲丝袜中文 | 毛片的网址| 久久久久久国产精品亚洲78 | 91精彩在线视频 | 欧美性生活免费 | 又长又大又黑又粗欧美 | 成人97人人超碰人人99 | 麻花天美星空视频 | 色诱亚洲精品久久久久久 | www.夜夜干.com | 久久久久网站 | 久久伊人婷婷 | 最新日韩中文字幕 | 国产日韩欧美综合在线 | 射射射av | 中文在线亚洲 | 日韩av在线高清 | 亚洲一区黄色 | 午夜神马福利 | 午夜丁香视频在线观看 | 欧美人牲 | 最新日韩在线观看 | 久草视频网 | 国产成人中文字幕 | 国产无套视频 | 久久久久欠精品国产毛片国产毛生 | 色婷婷综合久久久久中文字幕1 | 亚洲精品麻豆视频 | 久草在线视频免费资源观看 | 九九视频精品在线 | 最近中文字幕视频网 | 久久婷婷网 | 制服丝袜在线91 | 国内成人av | 97精品电影院 | 1区2区3区在线观看 三级动图 | 免费在线观看污 | 亚洲 欧美变态 另类 综合 | 久久综合婷婷综合 | 欧美xxxx性xxxxx高清 | 亚洲精品午夜久久久 | 97福利社| 国产午夜精品视频 | 欧美男同视频网站 | 亚洲午夜精品久久久久久久久 | 国产一区二区手机在线观看 | 久久久av电影 | 欧美精品小视频 | 欧美在线视频二区 | 天天亚洲 | 亚洲成人黄色在线观看 | 亚洲mv大片欧洲mv大片免费 | 国产一区二区久久久久 | 色综合久久五月 | 久久电影国产免费久久电影 | 色伊人网 | 丁香五月亚洲综合在线 | 九九视频网 | 国产麻豆果冻传媒在线观看 | 97国产电影 | 91精品免费看 | 黄色h在线观看 | 久久国产精品一区二区三区四区 | 夜夜爽www| 日本中文字幕电影在线免费观看 | 973理论片235影院9 | 日日夜夜天天综合 | 成人影片免费 | 在线三级播放 | 欧美日韩1区 | 天天操天天操天天操天天操 | 免费黄色av.| www色| 国产精品精品视频 | 日精品在线观看 | 欧美日韩aa| 久久99久久99精品免观看粉嫩 | 免费看污在线观看 | 国产盗摄精品一区二区 | 玖玖色在线观看 | 三级性生活视频 | 国产在线播放一区 | 亚洲欧美999| 天天操天天弄 | 人成午夜视频 | 亚洲精品乱码久久久久久9色 | 在线免费观看视频a | 成年人在线免费看片 | 久久久国产视频 | 久久综合九色综合欧美狠狠 | 婷婷色网视频在线播放 | 欧美 日韩 性 | 九九久久久久久久久激情 | 日韩av区| 日韩av手机在线看 | 国产在线精品区 | 青青网视频 | 高清中文字幕av | 日韩在线视频播放 | 亚洲电影一级黄 | 青草视频在线播放 | 亚洲特级片 | www黄色av | 亚洲综合视频在线 | 亚洲精品国偷自产在线99热 | 成年人在线播放视频 | 97超级碰碰碰视频在线观看 | 国内精品久久久久久中文字幕 | 97热久久免费频精品99 | 最近中文国产在线视频 | 精品国偷自产在线 | 激情欧美在线观看 | 在线成人一区二区 | 日韩视频在线播放 | 欧美日韩中文国产一区发布 | 精品久久久久久久久亚洲 | 欧美久久久久久久久久久久久 | 国产精品一区二区免费视频 | 99视频精品在线 | 曰本免费av | 开心丁香婷婷深爱五月 | 最近最新中文字幕 | 久久丁香网 | 色婷婷色 | 国产亚洲人成网站在线观看 | 日韩av黄| 国产精品免费久久久久久久久久中文 | 激情亚洲综合在线 | 久久精品成人热国产成 | 美女福利视频在线 | 婷婷视频在线播放 | 片网站 | 国模一区二区三区四区 | 亚洲精品国偷拍自产在线观看蜜桃 | 99在线高清视频在线播放 | 日日操操操| 国产精品美女久久久免费 | 国产成人精品久久二区二区 | 国产九色在线播放九色 | 免费黄色网止 | 91黄色小视频 | 色播六月天 | 国产成人亚洲在线电影 | 一级黄色在线视频 | 亚洲国产小视频在线观看 | 国产91成人在在线播放 | 国产精品18久久久久vr手机版特色 | 成人精品视频 | 亚洲国产成人在线观看 | 五月开心激情 | 久久天天躁夜夜躁狠狠躁2022 | av一区二区三区在线观看 | 亚洲精品综合久久 | 日韩中文字幕在线看 | 欧美激情视频一区 | 久久久久久久久网站 | 亚洲成人av在线电影 | 亚洲精品视频在线看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 一二区电影 | 精品国产一区二区三区久久影院 | 91高清免费观看 | 午夜精品久久 | 亚洲国内精品视频 | 亚洲一区视频免费观看 | 久久久久久久福利 | 九九热在线观看 | 91av在线免费看 | 亚欧日韩成人h片 | 永久免费毛片在线观看 | 天天射,天天干 | 日韩,中文字幕 | 国产中的精品av小宝探花 | 四虎影视精品 | 免费美女久久99 | 免费在线观看成人小视频 | 精品99在线 | 免费成人在线网站 | 久久国产精品99久久久久久丝袜 | 国产亚洲情侣一区二区无 | 国产日韩欧美在线影视 | 欧美夫妻生活视频 | 免费观看一区 | 精品国产一二三四区 | 国产小视频在线免费观看视频 | 久久国产亚洲 | 久章草在线观看 | 人人干人人搞 | 国产中文字幕在线视频 | 永久精品视频 | 欧美另类sm图片 | 狠狠色丁香婷婷综合久久片 | 人人插人人澡 | 国产精品人成电影在线观看 | 91成人天堂久久成人 | 日韩美女免费线视频 | 欧洲视频一区 | 国产99久久九九精品免费 | 激情一区二区三区欧美 | 在线播放一区二区三区 | 亚洲理论在线 | 欧美日本一区 | 天天天色综合 | 久久成人精品电影 | 国产一级一片免费播放放 | 国产在线 一区二区三区 | 99福利片 | 狠狠操操 | 视频国产精品 | 激情视频免费观看 | 在线电影a | 亚洲最新合集 | 亚州av成人 | 黄色中文字幕在线 | 亚洲一区网站 | 日韩av免费大片 | 97国产超碰 | 月丁香婷婷 | 日韩在线免费观看视频 | 亚洲精品视频网 | 500部大龄熟乱视频使用方法 | 亚洲成人av电影在线 | 麻豆视传媒官网免费观看 | 精品人人爽 | 国产视频精品久久 | 国产一级黄 | 国产精品嫩草影视久久久 | 狠狠色香婷婷久久亚洲精品 | 黄色片网站大全 | 一区二区av | 少妇bbw撒尿| 中文一区在线 | 麻豆视频在线免费 | 天天爽天天射 | 91精品一区二区三区久久久久久 | 99精品国自产在线 | 中文字幕在线观看免费观看 | 亚洲精品视频在线观看视频 | 日韩xxxbbb | www视频在线播放 | 成年人在线观看网站 | 国产精品久久久久一区 | 韩日电影在线观看 | 欧美九九视频 | 美女精品在线观看 | 97免费在线观看视频 | 婷婷 中文字幕 | 国产精品24小时在线观看 | 麻豆精品国产传媒 | 久久色亚洲 | 西西4444www大胆无视频 | 欧美日韩精品国产 | 天天干天天怕 | 久久在线视频在线 | 国产精品免费成人 | 日韩一二区在线 | 欧美日韩国产网站 | 国产乱对白刺激视频在线观看女王 | 色网址99 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产精品麻豆91 | www天天干com| 四虎www| 国产精品久久嫩一区二区免费 | 深爱婷婷久久综合 | 97热久久免费频精品99 | 亚洲视频在线观看 | 国产四虎在线 | 日韩最新中文字幕 | 国产精品久久艹 | a特级毛片| 色开心 | 国产高清视频网 | 欧美另类美少妇69xxxx | 国产精品自产拍在线观看中文 | 欧美婷婷色| 国产精品黄色 | 性色av免费在线观看 | 久久这里 | 国产日产精品一区二区三区四区 | 夜夜躁日日躁狠狠久久av | 97香蕉视频 | 三级在线国产 | 91麻豆精品国产自产在线游戏 | 久久任你操 | 久久av免费电影 | 久久国产精品久久国产精品 | 精品国偷自产国产一区 | www看片网站 | 日韩精品久久久久久久电影99爱 | 狠狠干婷婷色 | 久久国内免费视频 | 午夜色大片在线观看 | 99久久久国产精品 | 国产成人福利 | 久久人人爽 | 国产一级大片在线观看 | 去干成人网 | 亚洲日b视频 | 中文字幕资源网 国产 | 狠狠操.com | 91精品毛片 | 国产精品久久久久久吹潮天美传媒 | 成人app在线播放 | 伊人六月| 天天干天天怕 | 麻豆精品传媒视频 | 成人蜜桃视频 | 97免费在线观看 | 亚洲精品成人av在线 | 九九色在线 | 在线观看国产永久免费视频 | 欧美黑吊大战白妞欧美 | 色网av | 色偷偷88888欧美精品久久久 | 99999精品| 在线观看免费视频 | 日韩成人在线免费观看 | 成人亚洲精品久久久久 | 日本大片免费观看在线 | 久久久人人爽 | 久草在线国产 | av在线一 | 美女视频免费一区二区 | 国产精品视频免费在线观看 | 亚洲 欧美 国产 va在线影院 | 韩国av免费在线 | 中文在线字幕免费观 | 91av播放 | 久久久精品国产免费观看同学 | 久久综合免费视频 | 国产午夜精品一区二区三区 | 91人人网| 久久精品日韩 | 人人玩人人爽 | 免费网站黄 | 国产精品久久久久久妇 | 久久久午夜影院 | av色图天堂网 | 久久在线精品视频 | 丁香色婷婷 | 欧美在线18 | 午夜精品久久一牛影视 | 色黄久久久久久 | 成人av网址大全 | 99热99re6国产在线播放 | 亚洲人成在 | 9999免费视频 | 成人av在线亚洲 | 国产一区在线精品 | 欧美日韩午夜在线 | 亚洲精品资源在线观看 | 久久久国产精品人人片99精片欧美一 | 在线观看视频黄色 | 日日夜夜精品视频 | 午夜精品99久久免费 | 中文十次啦 | 国产小视频免费在线网址 | 婷婷网站天天婷婷网站 | 国产精品自产拍在线观看网站 | 免费h视频| 亚洲一区二区观看 | 青青视频一区 | 国产精品av电影 | 久久99九九99精品 | www在线观看视频 | 成人丁香花 | 午夜精品久久久久久久99水蜜桃 | 二区三区在线视频 | 国产黄色视 | 国产视频 亚洲精品 | 天天做日日做天天爽视频免费 | 五月天婷婷免费视频 | 日韩欧美国产免费播放 | 久草网视频在线观看 | av天天在线观看 | 国产高清视频免费观看 | 午夜123 | 久久国产网 | 日韩电影一区二区三区 | 日韩成人精品一区二区三区 | 久久久久这里只有精品 | 深爱激情久久 | 日韩美一区二区三区 | 人人舔人人爱 | 手机在线中文字幕 | 99在线精品视频 | 成人av教育 | 欧美国产日韩久久 | 欧美人交a欧美精品 | 亚洲午夜精品久久久久久久久 | 天天操夜夜逼 | 亚洲国产网站 | 97国产精品一区二区 | 国产69精品久久久久99 | 欧洲精品码一区二区三区免费看 | 成人av中文字幕在线观看 | 久久久久一区二区三区四区 | 91手机电视| 国产中文字幕视频在线观看 | 亚洲人在线视频 | 欧美电影在线观看 | 久久久久欠精品国产毛片国产毛生 | 手机在线看a | 综合婷婷久久 | 黄色三级免费网址 | 精品国产乱码 | 国产小视频免费在线网址 | 99久视频| 久久人人爽爽 | 三级性生活视频 | 久久精品视频免费 | 色五丁香 | 中文字幕视频在线播放 | 国产精品美女免费看 | 欧美一级视频在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 日韩中文久久 | 欧美日韩视频在线一区 | 中文字幕国产一区 | 亚洲国产视频在线 | 欧亚日韩精品一区二区在线 | 日韩国产精品一区 | 久久免费看 | 免费网站在线观看成人 | 久久精品视频日本 | 欧美日韩国产精品一区二区三区 | 免费在线黄色av | 国产亚洲人 | 欧美日韩在线免费视频 | 久久国产精品第一页 | 国产精品中文字幕在线播放 | 久久久久久久网 | 欧洲av不卡 | www日韩视频 | 久久伊人婷婷 | 国产精品一区二区三区在线播放 | 人人看人人爱 | 黄色aaa毛片 | 久久免费99精品久久久久久 | 亚洲视频 在线观看 | 麻花豆传媒一二三产区 | 久久黄色片 | 日韩电影中文字幕在线观看 | 成人一级免费电影 | 午夜资源站 | 97视频在线观看成人 | 国产一线天在线观看 | 中文不卡视频在线 | 99精品免费视频 | 欧美性生活大片 | 国产视频二区三区 | 日本精品视频在线播放 | 日韩美一区二区三区 | 国产日韩精品在线 | 在线视频亚洲 | 免费成人看片 | 久久久久久久久久久福利 | 国产精品网站 | 久久精品美女视频 | 四虎国产免费 | 国产资源 | 久久久黄视频 | 国产精品99久久久久 | 国产精品一区久久久久 | 天天射射天天 | 中文资源在线播放 | 亚洲第一中文字幕 | 久久精品毛片基地 | 91免费视频网站在线观看 | 日韩乱码中文字幕 | 一区二区视| 999久久国精品免费观看网站 | 国产精品久久久久永久免费 | 果冻av在线 | 在线观看免费91 | 中文字幕资源在线观看 | 午夜视频在线观看一区二区 | 天天色天天综合 | 日韩久久久久久久 | 亚洲理论片在线观看 | 成人免费共享视频 | 久久影视网| 91成人精品一区在线播放69 | 婷婷丁香狠狠爱 | 97精品国自产拍在线观看 | 久久视频这里有精品 | 亚洲一区二区三区毛片 | 亚洲精品在线观看视频 | 天天干天天玩天天操 | 久久99精品久久久久婷婷 | www.888.av | 国产午夜精品久久 | 久久国产精品免费视频 | aaa日本高清在线播放免费观看 | av高清免费| 国产理论一区二区三区 | 亚洲精品动漫在线 | 在线观看免费av网站 | 91在线操 | 美女网站黄在线观看 | 99精品国产视频 | 久久免费视频精品 | 久久永久免费视频 | 亚洲日本va中文字幕 | 夜夜操天天 | 久久免费看视频 | 亚洲婷婷综合色高清在线 | 奇米影音四色 | 精品久久久久久久久久 | 欧美小视频在线观看 | 久久综合五月 | 狠狠躁夜夜av | 亚洲精品视频偷拍 | 久久兔费看a级 | 天堂va欧美va亚洲va老司机 | 亚洲a免费| 伊人资源视频在线 | 欧美综合在线视频 | 国产高清黄色 | 91色国产在线| 免费在线观看av片 | 色婷婷天天干 | 91精品在线看 | 日韩动态视频 | 中文字幕在线播放av | 国产精品久久久久久一二三四五 | 日本久草电影 | 久久久高清一区二区三区 | 欧美少妇的秘密 | 欧美在线free | 久久综合之合合综合久久 | 91porny九色在线播放 | 日韩天堂网 | 九色91福利| 麻豆91精品视频 | 亚洲综合在线五月 | 亚洲国产操| 欧美-第1页-屁屁影院 | 久久免费观看视频 | 日韩av一区二区在线 | 激情欧美日韩一区二区 | 色婷婷欧美 | 欧美日韩后| 婷婷久久国产 | 欧美日韩天堂 | 日日干美女 | 24小时日本在线www免费的 | 日韩精品大片 | 免费网站看v片在线a | 人人爽爽人人 | 91成年人网站 | 91视频午夜 | 日韩a在线观看 | 亚洲视频axxx| 天天弄天天操 | 五月开心六月伊人色婷婷 | 国产高清专区 | 国产又黄又爽又猛视频日本 | 日本中文字幕高清 | 韩国精品在线观看 | 麻豆久久久久 | 精品视频免费观看 | 亚洲二区精品 | 亚洲狠狠干 | 亚洲精品视频网站在线观看 | 综合网中文字幕 | 国产亚洲aⅴaaaaaa毛片 | 97超碰色偷偷 | 九九色在线观看 | 在线 成人 | 天天干天天操天天爱 | 成年人免费看片网站 | 伊人天天| 国产va饥渴难耐女保洁员在线观看 | 国产青草视频在线观看 | 超碰在线人人艹 | 婷婷六月网 | 国产视频一二三 | 成人免费在线视频 | 美女视频免费一区二区 | 香蕉久草 | 国产福利电影网址 | 精品人妖videos欧美人妖 | 国产精品久久久久一区二区国产 | 日韩欧美一区二区三区在线 | 在线国产视频一区 | 国产精品免费观看在线 | 久久视频一区 | 911精品美国片911久久久 | 久久综合九九 | 这里有精品在线视频 | 成人性生爱a∨ | 一级理论片在线观看 | 精品免费视频 | 亚洲伦理中文字幕 | 欧美精品在线视频 | 黄色大全免费观看 | 成人国产精品电影 | 99精品视频免费看 | 亚洲专区在线 | www最近高清中文国语在线观看 | 91精品一区在线观看 | 久久www免费视频 | 精品国内 | 久久精品综合 | 亚洲成色 | 久久久久久看片 | 在线网址你懂得 | 日韩网站在线免费观看 | 亚洲国产视频在线 | 在线免费黄色 | 中文字幕在线日本 | 久久人人爽 | 99热只有精品在线观看 | 五月婷婷六月丁香在线观看 | 日韩精品亚洲专区在线观看 | 激情婷婷 | 日本中文字幕影院 | 99在线精品免费视频九九视 | 韩国一区二区三区在线观看 | 久久免费视频1 | 伊人春色电影网 | 国产伦精品一区二区三区… | 91av在线免费观看 | 亚洲人人射 | 五月天婷亚洲天综合网精品偷 | 久久国产品 | 国产精品久久婷婷六月丁香 | www.成人久久 | 91在线www | av官网在线| 国产精品一区免费在线观看 | 天天操天天综合网 | 操天天操 | 精品国产一区二区三区免费 | 国产成人精品一区二区三区免费 | 亚洲国产中文在线观看 | 国产区精品区 | 久久久久国产精品视频 | 黄色影院在线观看 | 在线免费观看视频你懂的 | 国产成人一区二区三区久久精品 | 激情五月色播五月 | 黄色91在线观看 | 日本精品中文字幕 | 久久久久久久国产精品 | 久久色在线播放 | 精品国产精品国产偷麻豆 | 在线v | 久久久免费少妇 | 香蕉免费在线 | 91亚洲成人| 久久久在线免费观看 | 菠萝菠萝在线精品视频 | 国产精品久久久久久久免费观看 | 国产精品24小时在线观看 | 国产精品资源在线 | 欧美日韩18 | 日韩在线短视频 | 97超碰中文字幕 | 国产色秀视频 | 免费视频 你懂的 | 欧美色图30p| 97精品视频在线播放 | 久久久精品国产免费观看一区二区 | 国内精品久久久久久久 | 国产成人a亚洲精品 | 天天综合入口 | 久久五月激情 | 久久久国产精品网站 | 久久国产精品第一页 | 国产综合视频在线观看 | 操操操人人 | 亚洲国产高清在线 | 国产精品理论片在线播放 | 成年人网站免费观看 | www.五月婷婷 | 在线中文字幕视频 | 日韩v欧美v日本v亚洲v国产v | 国产日韩欧美在线影视 | 狠狠色丁香婷婷综合欧美 | 亚洲狠狠婷婷综合久久久 | 日本在线观看中文字幕无线观看 | 国产精品久久久久久久久久久免费看 | 成人av在线网 | 黄色视屏免费在线观看 | 在线国产欧美 | 亚洲午夜精品一区 | 国产一区高清在线 | 欧美午夜理伦三级在线观看 | 天堂黄色片 | 狠狠色狠狠综合久久 | 中午字幕在线观看 | 韩国精品福利一区二区三区 | 一区二区视频在线免费观看 | 在线之家免费在线观看电影 | 在线观看 国产 | 精品国产乱码 | 日韩免费一区二区三区 | 亚洲日本色 | 日韩系列 | a级片在线播放 | 国产一区二区网址 | 91在线小视频 | 国产精品久久久影视 | av免费网站在线观看 | 97手机电影网 | 97在线视频免费观看 | 欧美日韩一区二区在线观看 | 精品一区二区免费 | 日韩成人精品一区二区 | 狠狠干夜夜操天天爽 | 日操操| 91精品一区国产高清在线gif | 免费久久久久久 | 九九久久在线看 | 国产专区在线播放 | 久久专区| 91福利试看 | 最新影院 | 天天夜夜操 | 人人澡超碰碰97碰碰碰软件 | 美女网站色在线观看 | 国产成人精品电影久久久 | www.91av在线 | 国产美女无遮挡永久免费 | 色一级片 | 国产综合在线观看视频 | 久草视频在线新免费 | 日韩三级在线观看 | 国产美女精彩久久 | 视频二区在线视频 | 日韩免费不卡视频 | 欧美在线1区 | 国产黄色片久久久 | 欧美久久成人 | 黄网站免费久久 | 中文字幕a在线 | 涩涩网站在线观看 | 9797在线看片亚洲精品 | 在线导航福利 | 久草在线手机观看 | 亚洲性xxxx| 亚洲一区在线看 | 91精品亚洲影视在线观看 | 精品视频久久久 | 天天曰天天干 | 日韩在线电影观看 | 综合av在线| 亚洲一级电影 | 国产精品女人网站 | 黄色大片国产 | 亚洲观看黄色网 | 欧美天天综合 | 一区二区三区高清不卡 | 99精品视频在线观看视频 | 欧美 日韩 性 | 久久久久久国产精品免费 | 欧美美女一级片 | 亚洲精品乱码 | 日日色综合 | 欧美一区二区三区免费看 | 国产中文字幕视频在线观看 | 一区二区三区日韩视频在线观看 | 欧美日韩一区二区视频在线观看 | 日韩在线观看免费 | 久久97超碰 | 天堂中文在线视频 | 国产丝袜在线 | 日韩精品专区在线影院重磅 | 欧美福利网站 | 99精品视频免费在线观看 | 日韩欧美视频二区 | av中文在线影视 | 曰韩精品 | 欧美国产亚洲精品久久久8v | 天天摸天天操天天爽 | 久久久人人人 | 国产一级在线视频 | av在线收看 | 久久久久麻豆 | 天天色天天 | 九九热在线精品视频 | 91精品国产麻豆 | 精品一区电影 | av高清网站在线观看 | 国产成人精品一区二区三区 | 国产高清精品在线 | 日韩高清观看 | 天天干天天拍天天操 | 福利av在线 | 色偷偷88888欧美精品久久久 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 亚洲最新av | 在线观看日韩精品视频 | 久久久久免费精品国产小说色大师 | 欧美午夜理伦三级在线观看 | 在线国产中文字幕 | 国产成人av网 | 国产精品午夜久久久久久99热 | 国产一区福利在线 | 91免费观看网站 | 国产日韩欧美在线观看视频 | 亚洲永久精品视频 | 中文字幕高清在线播放 | av资源在线观看 | 亚洲国产成人精品在线 | 在线超碰av | 久久视频免费观看 | 成人理论在线观看 | 最新不卡av | 亚洲综合激情 | 337p日本欧洲亚洲大胆裸体艺术 | 亚洲激情电影在线 | 99久免费精品视频在线观看 | 久久图 | 国产精品久久久久高潮 | 婷婷色综 | 国产伦理久久 | 激情五月婷婷综合网 | 天堂av免费观看 | 97涩涩视频 | 六月婷婷久香在线视频 | 久久精精品 | 国产精品色婷婷视频 | 一级片免费观看 | 91最新在线视频 | 色婷婷www | 久久视频免费观看 | 在线成人国产 | 国产精品色婷婷视频 | 亚洲视频 中文字幕 | 欧美一二三视频 | 又爽又黄又无遮挡网站动态图 | 国产精品毛片一区 | 久久久久久久久亚洲精品 | 97成人精品 | 91精品国产91热久久久做人人 | 亚洲a在线观看 | 中文不卡视频 | 在线观看视频h | 91久久黄色 | 欧洲不卡av | 欧美专区国产专区 | 欧美性爽爽 | 中文字幕av在线播放 | 久久高清国产视频 | 国产精品久久久久久久久久直播 | 国产99免费视频 | 中文字幕在线视频一区二区三区 | 又爽又黄又无遮挡网站动态图 | 操操操夜夜操 | 国产在线高清 | 精品国产黄色片 | 色97在线 | 欧美日韩一二三四区 | av在观看 | 亚洲国产色一区 | 在线免费高清一区二区三区 | 欧美日韩天堂 | 久久中文视频 | 国产福利一区二区三区在线观看 | 欧美伦理一区二区 | 日本久久综合网 | 热久久免费视频 | 亚洲在线视频观看 | 黄色网在线免费观看 | 久久久电影网站 | 亚洲激情在线观看 | 国产成人一区二区三区免费看 | 天天操比 | 青青草国产成人99久久 | 波多野结衣在线播放视频 | 伊人国产视频 | 日韩精品最新在线观看 | 中文字幕精品一区久久久久 | 色综合久久精品 | 激情欧美一区二区三区免费看 | 欧美污污网站 | 91在线资源 | 国产一区在线看 | 亚洲精品在线免费 | 丝袜美女视频网站 | 中文字幕在线视频一区 | 91成人看片 | 婷婷 中文字幕 | 欧美激情第一页xxx 午夜性福利 | 亚洲精品国产成人 | 五月婷婷在线观看视频 | 999视频在线观看 | 激情偷乱人伦小说视频在线观看 | 国内精品久久久 | 久久免费成人网 | 日韩在线第一 | 美女久久99| 国产精品24小时在线观看 | 国产高清精 | 国产成人久 | 69视频在线播放 | 丁香色天天 | 97伊人网| 国产精在线 | 日韩视频图片 | 国产精品毛片久久久 | 国产黄色免费看 | 欧美日韩中文另类 | 51久久成人国产精品麻豆 | 亚洲欧洲一级 | 特级a老妇做爰全过程 | 五月婷久 | a√天堂中文在线 | 欧美精品免费一区二区 | 久久久久久久99精品免费观看 | 亚洲国产资源 | 国产在线超碰 | av电影一区二区三区 | 丁香六月中文字幕 | 久久综合中文色婷婷 | 爱射综合 | 亚洲在线视频观看 |