jacob打印word(.doc)或者excel(.xls) 【java实现】

还是直接贴代码喽

package com.xfzx.test.POI.main;

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

public class JacobPress {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		printWord("D:/txt.docx");
	//	printExcel("D:/提醒通知明细通用模板.xlsx");
	}

	public static void printExcel(String filePath) {
		/**
		 * 功能:实现打印工作
		 */
		ComThread.InitSTA();
		ActiveXComponent xl = new ActiveXComponent("Excel.Application");
		try {
			// System.out.println("version=" + xl.getProperty("Version"));
			// 不打开文档
			Dispatch.put(xl, "Visible", new Variant(true));
			Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
			// 打开文档
			Dispatch excel = Dispatch.call(workbooks, "Open", filePath)
					.toDispatch();
			// 开始打印
			Dispatch.call(excel, "PrintOut");
            xl.invoke("Quit", new Variant[] {});
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 始终释放资源
			ComThread.Release();
		}
	}

	public static void printWord(String filePath) {
		ComThread.InitSTA();
		ActiveXComponent wd = new ActiveXComponent("Word.Application");
		try {
			// 不打开文档
			Dispatch.put(wd, "Visible", new Variant(true));
			Dispatch document = wd.getProperty("Documents").toDispatch();
			// 打开文档
			Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method,
					new Object[] { filePath }, new int[1]).toDispatch();
			// 开始打印
			Dispatch.callN(doc, "PrintOut");
			wd.invoke("Quit", new Variant[] {});
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 始终释放资源
			ComThread.Release();
		}
	}
	
	// 获得文件后缀名
	public static String getPostfix(String inputFilePath) {
		String[] p = inputFilePath.split("\\.");
		if (p.length > 0) {// 判断文件有无扩展名
			// 比较文件扩展名
			return p[p.length - 1];
		} else {
			return null;
		}
	}

}

  

posted @ 2013-04-09 14:20  郑小明  阅读(2537)  评论(0编辑  收藏  举报