jcom为word中增加一个表格

增加表格,并让表格所在页面横排,有几行也不明白,但是按照vba的翻译过来就可以
public synchronized void addTable(String filePath, int rowsNum,
			int colsNum, String[][] vals) {
		ReleaseManager rm = new ReleaseManager();
		IDispatch docApp = null;
		try {
			docApp = new IDispatch(rm, "Word.Application");

			IDispatch documents = (IDispatch) docApp.get("Documents");

			IDispatch doc = (IDispatch) documents.method("open",
					new Object[] { filePath });// open

			IDispatch selection = ((IDispatch) docApp.get("Selection"));
			selection.method("endKey", new Object[] { new Integer(6) });// 光标到文档末尾

			//selection.method("InsertBreak", new Object[] { new Integer(7) });// 插入一个分页符
			IDispatch range = (IDispatch) doc.method("Range", new Object[] {
					selection.get("start"), selection.get("start") });// 获得一个range,不知道干什么的
			range.method("InsertBreak", new Object[] { new Integer(2) });// 插入一个分页符
			selection.put("start", ((Integer) selection.get("start")) + 1);//选取的开始点右移一个位置,不知道为什么,但是不加这一行不行,变成整篇文档横排了

//			selection = ((IDispatch) docApp.get("Selection"));
			range = (IDispatch) doc.method("Range", new Object[] {
					selection.get("start"),
					((IDispatch) doc.get("Content")).get("end") });//获得一个范围
			IDispatch pageSetup = (IDispatch) range.get("PageSetup");//获得页面设置
			pageSetup.put("Orientation", new Integer(1));//横排
			IDispatch tables = ((IDispatch) doc.get("Tables"));// 得到doc中的表格集合
			tables.method("add", new Object[] { selection.get("range"),
					rowsNum, colsNum });// 增加一张表
			IDispatch table = (IDispatch) tables.method("item",
					new Object[] { new Integer(1) });// 获得刚增加的表格
			IDispatch rows = ((IDispatch) table.get("rows"));// 得到行集合

			for (int i = 1; i <= rowsNum; i++) {
				IDispatch row = (IDispatch) rows.method("item",
						new Object[] { new Integer(i) });
				IDispatch cells = (IDispatch) row.get("Cells");// 单元格集合

				for (int j = 1; j <= colsNum; j++) {
					IDispatch cell = (IDispatch) cells.method("item",
							new Object[] { new Integer(j) });
					((IDispatch) cell.get("Range")).put("Text",
							vals[i - 1][j - 1]);//为表格中的格子赋值

				}

			}

			((IDispatch) docApp.get("ActiveDocument")).method("saveAs",
					new Object[] { filePath, new Integer(0) });

		} catch (JComException e) {
			e.printStackTrace();
		} finally {
			try {
				if (docApp != null) {
					((IDispatch) docApp.get("ActiveDocument")).put("Saved",
							new Boolean(true));

					docApp.method("quit", null);
					docApp = null;
				}
				rm.release();
				rm = null;
			} catch (JComException e) {

				e.printStackTrace();
			}
		}

	}

你可能感兴趣的:(J#,VBA)