java excel打印_Java利用jacob实现打印Excel文件

packagecom.HeiBeiEDU.test2;importjava.io.File;importcom.jacob.activeX.ActiveXComponent;importcom.jacob.com.ComThread;importcom.jacob.com.Dispatch;importcom.jacob.com.Variant;public classPrintDemo {public static booleanprintOfficeFile(File f) {if (f != null &&f.exists()) {

String fileNameString=f.getName();

String postfixString=Utils.getPostfix(fileNameString);if (postfixString.equalsIgnoreCase("xls") || postfixString.equalsIgnoreCase("xlsx")) {/*** 功能:实现excel打印工作*/ComThread.InitSTA();

ActiveXComponent xl= new ActiveXComponent("Excel.Application");try{//System.out.println("version=" +//xl.getProperty("Version"));//不打开文档

Dispatch.put(xl, "Visible", new Variant(false));

Dispatch workbooks= xl.getProperty("Workbooks").toDispatch();//打开文档

Dispatch excel = Dispatch.call(workbooks, "Open", f.getAbsolutePath()).toDispatch();//横向打印(2013/05/24)//Dispatch currentSheet = Dispatch.get(excel,//"ActiveSheet")//.toDispatch();//Dispatch pageSetup = Dispatch//.get(currentSheet, "PageSetup").toDispatch();//Dispatch.put(pageSetup, "Orientation", new Variant(2));//每张表都横向打印2013-10-31

Dispatch sheets = Dispatch.get((Dispatch) excel, "Sheets").toDispatch();//获得几个sheet

int count = Dispatch.get(sheets, "Count").getInt();//System.out.println(count);

for (int j = 1; j <= count; j++) {

Dispatch sheet=Dispatch

.invoke(sheets,"Item", Dispatch.Get, new Object[] { new Integer(j) }, new int[1])

.toDispatch();

Dispatch pageSetup= Dispatch.get(sheet, "PageSetup").toDispatch();

Dispatch.put(pageSetup,"Orientation", new Variant(2));

Dispatch.call(sheet,"PrintOut");

}//开始打印

if (excel != null) {//Dispatch.call(excel, "PrintOut");//增加以下三行代码解决文件无法删除bug

Dispatch.call(excel, "save");

Dispatch.call(excel,"Close", new Variant(true));

excel= null;

}

xl.invoke("Quit", newVariant[] {});

xl= null;return true;

}catch(Exception e) {

e.printStackTrace();return false;

}finally{//始终释放资源

ComThread.Release();

}

}else if (postfixString.equalsIgnoreCase("doc") || postfixString.equalsIgnoreCase("docx")) {

ComThread.InitSTA();

ActiveXComponent wd= new ActiveXComponent("Word.Application");try{//不打开文档

Dispatch.put(wd, "Visible", new Variant(false));

Dispatch document= wd.getProperty("Documents").toDispatch();//打开文档

Dispatch doc =Dispatch

.invoke(document,"Open", Dispatch.Method, new Object[] { f.getAbsolutePath() }, new int[1])

.toDispatch();//开始打印

if (doc != null) {

Dispatch.call(doc,"PrintOut");//增加以下三行代码解决文件无法删除bug

Dispatch.call(doc, "save");

Dispatch.call(doc,"Close", new Variant(true));

doc= null;

}

wd.invoke("Quit", newVariant[] {});

wd= null;return true;

}catch(Exception e) {

e.printStackTrace();return false;

}finally{//始终释放资源

ComThread.Release();

}

}else{return false;

}

}else{return false;

}

}public static voidmain(String[] args) {

PrintDemo.printOfficeFile(new File("hehe.xls"));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值