将jcom.dll放入jdk的bin目录下,将jcom.jar放到项目里面,如果要实现pdf的转换,下载:
http://down2.cnzz.cc/soft/bigsoft/Acrobat_pro_812_cnzz.cc.rar
http://www.vichx.com/upload/Keygen.rar
工具类,实现了少量方法:
OfficeUtil.java:
import java.io.File; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import jp.ne.so_net.ga2.no_ji.jcom.IDispatch; import jp.ne.so_net.ga2.no_ji.jcom.JComException; import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelApplication; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelRange; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorkbook; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorkbooks; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorksheet; import jp.ne.so_net.ga2.no_ji.jcom.excel8.ExcelWorksheets; /** * word、excel工具类 * * @author 陈均 * */ public class OfficeUtil { public static final String WORD_APP = "Word.Application"; public static final String PDF_APP = "PDFMakerAPI.PDFMakerApp"; public static final String VISIBLE = "Visible"; public static final String DOCUMENTS = "Documents"; public static final String OPEN = "Open"; public static final String TABLES = "Tables"; public static final String COUNT = "Count"; public static final String COLUMNS = "Columns"; public static final String ROWS = "rows"; public static final String ITEM = "Item"; public static final String CELL = "Cell"; public static final String ADD = "Add"; public static final String SELECTION = "Selection"; public static final String RANGE = "range"; public static final String TEXT = "Text"; public static final String WIDTH = "Width"; public static final String HEIGHT = "Height"; public static final String SAVEAS = "saveAs"; public static final String QUIT = "Quit"; public static final String ACTIVEDOCUMENT = "ActiveDocument"; public static final Boolean V_FALSE = new Boolean(false); public static final Boolean V_TRUE = new Boolean(true); public static final Integer REPLACE = new Integer(2); public static final Integer WRAP = new Integer(1); /** * 将指定的excel数据映射成实体集合 * * @param filePath * excel文件的绝对路径 * @param fieldMap * 对实体字段的映射描述 * @param clazz * 映射的实体类型 * @return 实体集合结果 */ public <T> List<T> excelMapEntity(String filePath, Map<String, String> fieldMap, Class<T> clazz) throws Exception { ReleaseManager rm = new ReleaseManager(); ExcelApplication excel = new ExcelApplication(rm); excel.Visible(true); ExcelWorkbooks xlBooks = excel.Workbooks(); ExcelWorkbook xlBook = xlBooks.Open(filePath); ExcelWorksheet xlSheet = excel.ActiveSheet(); ExcelRange xlRange = xlSheet.Cells(); int cols = 0; int rows = 0; for (int i = 1; i < 256; i++) { String fieldDesc = xlRange.Item(1, i).Text(); if ("".equals(fieldDesc)) { cols = i - 1; break; } } Object fieldVal = "";// 字段值 String fieldDesc = "";// 字段描述 String fieldName = "";// 映射成类字段 boolean end = false;// 是否行结束 List<T> list = new ArrayList<T>(); for (int i = 2; i < 65536; i++) { T entity = clazz.newInstance(); for (int j = 1; j <= cols; j++) { fieldVal = xlRange.Item(i, j).Text(); if ("".equals(fieldVal)) { end = true; break; } fieldDesc = xlRange.Item(1, j).Text(); fieldName = fieldMap.get(fieldDesc); Field field = clazz.getDeclaredField(fieldName); Class<?> z = field.getType(); field.setAccessible(true); if(z.newInstance() instanceof java.util.Date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); fieldVal = sdf.parse(fieldVal.toString()); } field.set(entity, fieldVal); } if (end) { rows = i - 2; break; } list.add(entity); } System.out.println("实际行数:" + rows); System.out.println("实际列数:" + cols); xlBook.Close(false, null, false); excel.Quit(); rm.release(); return list; } /** * 将指定的集合数据映射成excel数据文件 * * @param <T> * @param list * 数据集合 * @param saveFilePath * 保存文件的绝对路径 * @param fieldMap * 对实体字段的映射描述 * @param clazz * 映射的实体类型 * @throws Exception */ public <T> void entityMapExcel(List<T> list, String saveFilePath, Map<String, String> fieldMap,List<String> fieldDescList, Class<T> clazz) throws Exception { ReleaseManager rm = new ReleaseManager(); ExcelApplication excel = new ExcelApplication(rm); excel.Visible(true); ExcelWorkbooks xlBooks = excel.Workbooks(); ExcelWorkbook xlBook = xlBooks.Add(); ExcelWorksheets xlSheets = xlBook.Worksheets(); ExcelWorksheet xlSheet = xlSheets.Item(1); ExcelRange xlRange = xlSheet.Cells(); int rows = list.size(); int cols = fieldMap.size(); System.out.println("实际列数:" + cols); System.out.println("实际行数:" + rows); int index = 1; for (String item : fieldDescList) { xlRange.Item(1, index).Value(item); index++; } Object fieldVal = "";// 字段值 String fieldDesc = "";// 字段描述 String fieldName = "";// 映射成类字段 // 生成具体内容 for (int i = 1; i <= rows; i++) { T entity = list.get(i - 1); for (int j = 1; j <= cols; j++) { fieldDesc = xlRange.Item(1, j).Text(); fieldName = fieldMap.get(fieldDesc); System.out.println(j + fieldDesc + "-->" + fieldName); Field field = clazz.getDeclaredField(fieldName); Class<?> z = field.getType(); field.setAccessible(true); fieldVal = field.get(entity); if(z.newInstance() instanceof java.util.Date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); fieldVal = sdf.format(fieldVal); } if(fieldVal==null) fieldVal = ""; xlRange.Item(i + 1, j).Value(fieldVal.toString()); } } File file = new File(saveFilePath); if(file.exists()) file.delete(); xlBook.SaveAs(saveFilePath); xlBook.Close(false, null, false); excel.Quit(); } /** * 将指定的word表格数据映射成实体集合 * * @param <T> * @param filePath * word文件的绝对路径 * @param fieldMap * 对实体字段的映射描述 * @param clazz * 映射的实体类型 * @return 实体集合结果 * @throws Exception */ public <T> List<T> wordMapEntity(String filePath, Map<String, String> fieldMap, Class<T> clazz) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); wdApp.put(VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); IDispatch wdDocument = (IDispatch) wdDocuments.method(OPEN, new Object[] { filePath }); String fullname = (String) wdDocument.get("FullName"); System.out.println("fullname=" + fullname); IDispatch wdTables = (IDispatch) wdDocument.get(TABLES); System.out.println(wdTables); Integer table_count = (Integer) wdTables.get(COUNT); System.out.println("表格数=" + table_count); IDispatch wdTable = (IDispatch) wdTables.method(ITEM, new Object[] { new Integer(1) }); IDispatch tableRows = (IDispatch) wdTable.get(ROWS); IDispatch tablecols = (IDispatch) wdTable.get(COLUMNS); Integer rows = (Integer) tableRows.get(COUNT); Integer cols = (Integer) tablecols.get(COUNT); System.out.println("表格行数:" + rows); System.out.println("表格列数:" + cols); Object fieldVal = "";// 字段值 String fieldDesc = "";// 字段描述 String fieldName = "";// 映射成类字段 List<T> list = new ArrayList<T>(); for (int i = 2; i <= rows; i++) { T entity = clazz.newInstance(); for (int j = 1; j <= cols; j++) { IDispatch cell = (IDispatch) wdTable.method(CELL, new Object[] { new Integer(1), new Integer(j) }); IDispatch range = (IDispatch) cell.get("Range"); fieldDesc = range.get("Text").toString(); fieldDesc = fieldDesc.substring(0, fieldDesc.length() - 2); IDispatch FieldCell = (IDispatch) wdTable.method(CELL, new Object[] { new Integer(i), new Integer(j) }); IDispatch FieldRange = (IDispatch) FieldCell.get("Range"); fieldVal = FieldRange.get("Text"); fieldVal = fieldVal.toString().substring(0, fieldVal.toString().length() - 2); fieldName = fieldMap.get(fieldDesc); Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); Class<?> z = field.getType(); if(z.newInstance() instanceof java.util.Date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); fieldVal = sdf.parse(fieldVal.toString()); } field.set(entity, fieldVal); // System.out.println("字段描述:" + fieldDesc + ";字段名字:" +fieldName // + ";字段值:" + fieldVal); } list.add(entity); } wdApp.method(QUIT, null); rm.release(); return list; } /** * 将指定的集合数据映射成word数据文件 * * @param <T> * @param list * 数据集合 * @param saveFilePath * 保存文件的绝对路径 * @param fieldMap * 对实体字段的映射描述 * @param clazz * 映射的实体类型 * @throws Exception */ public <T> void entityMapWord(List<T> list, String saveFilePath, Map<String, String> fieldMap,List<String> fieldDescList, Class<T> clazz) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); wdApp.put(VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); IDispatch wdDocument = (IDispatch) wdDocuments.method(ADD, null); IDispatch wdTables = (IDispatch) wdDocument.get(TABLES); Integer table_count = (Integer) wdTables.get(COUNT); System.out.println("表格数=" + table_count); Integer rows = list.size(); Integer cols = fieldMap.size(); System.out.println("实际列数:" + cols); System.out.println("实际行数:" + rows); IDispatch selection = (IDispatch) wdApp.get(SELECTION); IDispatch wdTable = (IDispatch) wdTables.method(ADD, new Object[] { selection.get(RANGE), rows + 1, cols }); // 生成头描述 int index = 1; for (String item : fieldDescList) { IDispatch cell = (IDispatch) wdTable.method(CELL, new Object[] { new Integer(1), new Integer(index) }); IDispatch range = (IDispatch) cell.get("Range"); range.put(TEXT, item); index++; } Object fieldVal = "";// 字段值 String fieldDesc = "";// 字段描述 String fieldName = "";// 映射成类字段 for (int i = 1; i <= rows; i++) { T entity = list.get(i - 1); System.out.println("***********************"); for (int j = 1; j <= cols; j++) { IDispatch cell = (IDispatch) wdTable.method(CELL, new Object[] { new Integer(1), new Integer(j) }); IDispatch range = (IDispatch) cell.get("Range"); fieldDesc = range.get("Text").toString(); fieldDesc = fieldDesc.substring(0, fieldDesc.length() - 2); fieldName = fieldMap.get(fieldDesc); Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); fieldVal = field.get(entity); Class<?> z = field.getType(); if(z.newInstance() instanceof java.util.Date){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); fieldVal = sdf.format(fieldVal); } if(fieldVal==null) fieldVal = ""; IDispatch FieldCell = (IDispatch) wdTable.method(CELL, new Object[] { new Integer(i + 1), new Integer(j) }); IDispatch FieldRange = (IDispatch) FieldCell.get("Range"); FieldRange.put(TEXT, fieldVal); System.out.println("字段描述:" + fieldDesc + ";字段名字:" + fieldName + ";字段值:" + fieldVal); } } ((IDispatch) wdApp.get(ACTIVEDOCUMENT)).method(SAVEAS, new Object[] { saveFilePath, new Integer(0) }); wdApp.method(QUIT, null); rm.release(); } /** * 文件转pdf文件 * * @throws Exception */ public void fileToPdf(String filePath, String pdfPath) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch pdfApp = new IDispatch(rm, PDF_APP); Object result = pdfApp.method("CreatePDF", new Object[] { filePath, pdfPath }); System.out.println(result); rm.release(); } /** 合并WORD文档,第一个为要合并的文档* */ public static void uniteDoc(List<String> fileList, String saveFilePath)throws Exception { if (fileList.size() == 0 || fileList == null) { return; } ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); wdApp.put(VISIBLE, new Boolean(true)); try { IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); wdDocuments.method(OPEN,new Object[] { fileList.get(0) }); for (int i = 1; i < fileList.size(); i++) { IDispatch selection = (IDispatch) wdApp.get(SELECTION); selection.method("HomeKey", new Object[]{new Integer(6)}); selection.method("insertFile", new Object[]{fileList.get(i),"",V_FALSE,V_FALSE,V_FALSE}); } ((IDispatch) wdApp.get("ActiveDocument")).method("saveAs", new Object[] { saveFilePath, new Integer(0) }); } catch (Exception e) { throw new RuntimeException("合并word文件出错.原因:" + e); } finally { wdApp.method(QUIT, null); rm.release(); } } /** * 在指定的word文件的位置插入一张指定大小的图片 * * @param filePath * word文件的绝对路径 * @param imagePath * 图片的绝对路径 * @param w * 图片在word中的宽度 * @param h * 图片在word中高度 * @param x * 图片在word中的x坐标 * @param y * 图片在word中的y坐标 * @throws Exception */ public void insertImage(String filePath, String imagePath, Integer w, Integer h, Integer x, Integer y) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); wdApp.put(VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); wdDocuments.method(OPEN, new Object[] { filePath }); IDispatch selection = (IDispatch) wdApp.get(SELECTION); IDispatch inlineShapes = (IDispatch) selection.get("InlineShapes"); IDispatch image = (IDispatch) inlineShapes.method("AddPicture", new Object[] { imagePath }); image.put(WIDTH, w); image.put(HEIGHT, h); IDispatch shape = (IDispatch) image.method("ConvertToShape", null); shape.method("IncrementLeft", new Object[] { x }); shape.method("IncrementTop", new Object[] { y }); IDispatch activeDoc = (IDispatch) wdApp.get(ACTIVEDOCUMENT); activeDoc.method("Save", null); wdApp.method(QUIT, null); rm.release(); } /** * 批量替换doc里面的内容 * * @param filePath * word文件的绝对路径 * @param saveFilePath * 替换后的文件存放的绝对路径 * @param params替换的内容 * @param fileParams 文件占位符替换 * @throws Exception */ public void batchReplace(String filePath, String saveFilePath, Map<String, String> params,Map<String, String[]> fileParams) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); try { wdApp.put(VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); wdDocuments.method(OPEN, new Object[] { filePath }); IDispatch selection = (IDispatch) wdApp.get(SELECTION); IDispatch find = (IDispatch) selection.get("Find"); find.method("ClearFormatting", null); IDispatch replacement = (IDispatch) find.get("Replacement"); replacement.method("ClearFormatting", null); for (String findText : params.keySet()) { String replaceText = params.get(findText); if(replaceText==null)replaceText = ""; if(replaceText.length()>200){ int len = replaceText.length(); while(len != -1){ if(len>200){ String tmpreplaceText = replaceText.substring(0,200); replaceText = replaceText.substring(200); len = replaceText.length(); find.method("Execute", new Object[] { findText, V_TRUE, V_FALSE, V_FALSE, V_FALSE, V_FALSE, V_TRUE, WRAP, V_FALSE, tmpreplaceText+findText,REPLACE }); }else{ replaceText = replaceText.substring(0,len); len = -1; find.method("Execute", new Object[] { findText, V_TRUE, V_FALSE, V_FALSE, V_FALSE, V_FALSE, V_TRUE, WRAP, V_FALSE, replaceText,REPLACE }); } } }else{ find.method("Execute", new Object[] { findText, V_TRUE, V_FALSE, V_FALSE, V_FALSE, V_FALSE, V_TRUE, WRAP, V_FALSE, replaceText,REPLACE }); } } for (String findText : fileParams.keySet()) { String imagePath = fileParams.get(findText)[0]; String w = fileParams.get(findText)[1]; String h = fileParams.get(findText)[2]; find.method("ClearFormatting", null); find.put(TEXT, findText); find.put("Forward", "True"); find.put("Format", "True"); find.put("MatchCase", "True"); find.put("MatchWholeWord", "True"); find.method("Execute", null); IDispatch inlineShapes = (IDispatch) selection.get("InlineShapes"); IDispatch image = (IDispatch) inlineShapes.method("AddPicture", new Object[] { imagePath }); if(w!=null && !"".equals(w)) image.put(WIDTH, w); if(h!=null && !"".equals(h)) image.put(HEIGHT, h); } IDispatch activeDoc = (IDispatch) wdApp.get(ACTIVEDOCUMENT); activeDoc.method(SAVEAS, new Object[] { saveFilePath, new Integer(0) }); } catch (Exception e) { throw e; }finally{ System.out.println("退出程序........."); wdApp.method(QUIT, null); rm.release(); } } /** * 批量替换doc里面的内容 * * @param filePath * word文件的绝对路径 * @param saveFilePath * 替换后的文件存放的绝对路径 * @param params替换的内容 * @throws Exception */ public void batchReplace(String filePath, String saveFilePath, Map<String, String> params) throws Exception { ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, WORD_APP); wdApp.put(VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); wdDocuments.method(OPEN, new Object[] { filePath }); IDispatch selection = (IDispatch) wdApp.get(SELECTION); IDispatch find = (IDispatch) selection.get("Find"); find.method("ClearFormatting", null); IDispatch replacement = (IDispatch) find.get("Replacement"); replacement.method("ClearFormatting", null); for (String findText : params.keySet()) { String replaceText = params.get(findText); if(replaceText==null)replaceText = ""; find.method("Execute", new Object[] { findText, V_TRUE, V_FALSE, V_FALSE, V_FALSE, V_FALSE, V_TRUE, WRAP, V_FALSE, replaceText,REPLACE }); } IDispatch activeDoc = (IDispatch) wdApp.get(ACTIVEDOCUMENT); activeDoc.method(SAVEAS, new Object[] { saveFilePath, new Integer(0) }); wdApp.method(QUIT, null); rm.release(); } public static void testBatchReplace() throws Exception { OfficeUtil officeUtil = new OfficeUtil(); String filePath = "e:\\template.doc"; String saveFilePath = "e:\\test.doc"; Map<String, String> params = new HashMap<String, String>(); //params.put("#DISTRIBUTECHAR#", "forever"); params.put("#IP_NAME#", "chenjun"); //TypeParagraph officeUtil.batchReplace(filePath, saveFilePath, params); } public static void testInsertImage() throws Exception { OfficeUtil officeUtil = new OfficeUtil(); String filePath = "e:\\Users_save.doc"; String imagePath = "e:\\b.jpg"; officeUtil.insertImage(filePath, imagePath, 100, 100, 200, 400); } public static void testFileToPdf() throws Exception { OfficeUtil officeUtil = new OfficeUtil(); String wordPath = "e:\\template.doc"; String pdfPath = "e:\\users.pdf"; officeUtil.fileToPdf(wordPath, pdfPath); } public static void main(String[] args)throws Exception { //testBatchReplace(); String wordPath = "e:\\template.doc"; ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, OfficeUtil.WORD_APP); wdApp.put(OfficeUtil.VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(OfficeUtil.DOCUMENTS); IDispatch wdDocument = (IDispatch) wdDocuments.method(OfficeUtil.OPEN, new Object[] { wordPath }); IDispatch wdTables = (IDispatch) wdDocument.get(OfficeUtil.TABLES); System.out.println(wdTables.get(COUNT)); //testEntityMapExcel(); //testExcelMapEntity(); //testEntityMapWord(); //testWordMapEntity(); //testInsertImagePos(); //wrapFormat.method("ZOrder",new Object[]{new Integer(4)}); // String filePath = "e:\\信息.doc"; // ReleaseManager rm = new ReleaseManager(); // IDispatch wdApp = new IDispatch(rm, WORD_APP); // wdApp.put(VISIBLE, new Boolean(true)); // IDispatch wdDocuments = (IDispatch) wdApp.get(DOCUMENTS); // IDispatch wdDocument = (IDispatch) wdDocuments.method(OPEN, // new Object[] { filePath }); // String fullname = (String) wdDocument.get("FullName"); // System.out.println("fullname=" + fullname); // // IDispatch wdTables = (IDispatch) wdDocument.get(TABLES); // Integer table_count = (Integer) wdTables.get(COUNT); // System.out.println("表格数=" + table_count); // IDispatch wdTable = (IDispatch) wdTables.method(ITEM, // new Object[] { new Integer(1) }); // IDispatch tableRows = (IDispatch) wdTable.get(ROWS); // IDispatch tablecols = (IDispatch) wdTable.get(COLUMNS); // Float w = (Float)wdTable.get("PreferredWidth"); // System.out.println(w); // Integer rows = (Integer) tableRows.get(COUNT); // Integer cols = (Integer) tablecols.get(COUNT); // System.out.println("表格行数:" + rows); // System.out.println("表格列数:" + cols); // String fieldDesc = ""; // StringBuffer sb = new StringBuffer("<table width=\"439\" height=\"140\" border=\"1\">"); // for(int i = 1;i<=rows;i++){ // System.out.println("*****************"); // sb.append("<tr>"); // for(int j = 1;j<=cols;j++){ // IDispatch cell = (IDispatch) wdTable.method(CELL, new Object[] { // new Integer(i), new Integer(j) }); // IDispatch range = (IDispatch) cell.get(RANGE); // fieldDesc = range.get(TEXT).toString(); // fieldDesc = fieldDesc.substring(0, fieldDesc.length() - 2); // //根据字段类型生成相应内容 // sb.append(" <td>#text#</td>".replaceAll("#text#", fieldDesc)); // //System.out.println(fieldDesc); // } // sb.append("</tr>"); // } // sb.append("</table>"); // System.out.println(sb.toString()); //testFileToPdf(); } public static void testInsertImagePos() throws JComException { String filePath = "e:\\template.doc"; String imagePath = "e:\\chenjun.PNG"; ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, OfficeUtil.WORD_APP); wdApp.put(OfficeUtil.VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(OfficeUtil.DOCUMENTS); IDispatch wdDocument = (IDispatch) wdDocuments.method(OfficeUtil.OPEN, new Object[] { filePath }); IDispatch selection = (IDispatch) wdApp.get(SELECTION); IDispatch find = (IDispatch) selection.get("Find"); find.put(TEXT, "#qm#"); find.put("Forward", "True"); find.put("Format", "True"); find.put("MatchCase", "True"); find.put("MatchWholeWord", "True"); Object obj = find.method("Execute", null); System.out.println(obj); IDispatch inlineShapes = (IDispatch) selection.get("InlineShapes"); IDispatch image = (IDispatch) inlineShapes.method("AddPicture", new Object[] { imagePath }); //image.put(WIDTH, 100); //image.put(HEIGHT, 100); IDispatch shape = (IDispatch) image.method("ConvertToShape", null); IDispatch wrapFormat = (IDispatch) shape.get("WrapFormat"); wrapFormat.put("Type", new Integer(3)); } public static void testInsertRow() throws JComException { String filePath = "e:\\20100802114149518.doc"; String saveFilePath = "e:\\201008021141495182.doc"; ReleaseManager rm = new ReleaseManager(); IDispatch wdApp = new IDispatch(rm, OfficeUtil.WORD_APP); wdApp.put(OfficeUtil.VISIBLE, new Boolean(true)); IDispatch wdDocuments = (IDispatch) wdApp.get(OfficeUtil.DOCUMENTS); IDispatch wdDocument = (IDispatch) wdDocuments.method(OfficeUtil.OPEN, new Object[] { filePath }); String fullname = (String) wdDocument.get("FullName"); System.out.println("fullname=" + fullname); IDispatch wdTables = (IDispatch) wdDocument.get(OfficeUtil.TABLES); System.out.println(wdTables); Integer table_count = (Integer) wdTables.get(OfficeUtil.COUNT); System.out.println("表格数=" + table_count); IDispatch wdTable = (IDispatch) wdTables.method(OfficeUtil.ITEM, new Object[] { new Integer(1) }); IDispatch tableRows = (IDispatch) wdTable.get(OfficeUtil.ROWS); IDispatch tablecols = (IDispatch) wdTable.get(OfficeUtil.COLUMNS); Integer rows = (Integer) tableRows.get(OfficeUtil.COUNT); Integer cols = (Integer) tablecols.get(OfficeUtil.COUNT); String fieldDesc = ""; Map<String, Integer> fieldPos = new HashMap<String, Integer>(); for(int i=1;i<=cols;i++){ IDispatch cell = (IDispatch) wdTable.method(OfficeUtil.CELL, new Object[] { new Integer(2), new Integer(i) }); IDispatch range = (IDispatch) cell.get(RANGE); fieldDesc = range.get(TEXT).toString(); fieldDesc = fieldDesc.substring(0, fieldDesc.length() - 2); System.out.println(fieldDesc); if(!"".equals(fieldDesc)){ fieldPos.put(fieldDesc, new Integer(i)); } } System.out.println(fieldPos.size()); for(int i = 3;i<=4;i++){ IDispatch lastRow = (IDispatch) tableRows.method(ITEM, new Object[]{i-1}); tableRows.method(ADD, new Object[]{lastRow}); rows++; for (int j = 1; j <= cols; j++) { IDispatch cell = (IDispatch) wdTable.method(OfficeUtil.CELL, new Object[] { new Integer(rows), new Integer(j) }); IDispatch range = (IDispatch) cell.get(RANGE); fieldDesc = range.get(TEXT).toString(); fieldDesc = fieldDesc.substring(0, fieldDesc.length() - 2); if(!"".equals(fieldDesc)){ IDispatch FieldCell = (IDispatch) wdTable.method(OfficeUtil.CELL, new Object[] { new Integer(rows-1), new Integer(j) }); IDispatch FieldRange = (IDispatch) FieldCell.get(RANGE); FieldRange.put(OfficeUtil.TEXT, "数据"); } } } //删除最后一行 IDispatch lastRow = (IDispatch) tableRows.method(ITEM, new Object[]{rows}); lastRow.method("Delete",null); System.out.println("表格行数:" + rows); System.out.println("表格列数:" + cols); ((IDispatch) wdApp.get(ACTIVEDOCUMENT)).method(SAVEAS, new Object[] { saveFilePath, new Integer(0) }); wdApp.method(OfficeUtil.QUIT, null); rm.release(); } }