将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();
}
}