通过jacob对excel word进行打印等操作

2014-11-23 21:36:51 · 作者: · 浏览: 49

  因为项目有个需求,要求能够在某个预定时间对特定报表进行自动打印。报表的形式主要是excel。如果是c++或者c#什么的,简直是小菜一碟。可惜,偏偏是java实现。并且,这又不同于常见的页面手工打印,可以通过java script调用打印机来实现。于是乎,开始摸索如何实现该功能。


  首先想到的是java自带的打印类。在javax.print包下。根据jdk说明,照着搬来了个程序,小试牛刀。


  view plaincopy to clipboardprint


  public class AutoPrint {


  public static void main(String[] args) {


  FileInputStream psStream;


  try {


  psStream = new FileInputStream("file.ps");


  } catch (FileNotFoundException ffne) {


  }


  if (psStream == null) {


  return;


  }


  DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;


  Doc myDoc = new SimpleDoc(psStream, psInFormat, null);


  PrintRequestAttributeSet aset =


  new HashPrintRequestAttributeSet();


  aset.add(new Copies(5));


  aset.add(MediaSize.A4);


  aset.add(Sides.DUPLEX);


  PrintService[] services =


  PrintServiceLookup.lookupPrintServices(psInFormat, aset);


  if(services.length<1){


  throw new RuntimeException("找不到打印机");


  }


  if (services.length > 0) {


  DocPrintJob job = services[0].createPrintJob();


  try {


  job.print(myDoc, aset);


  } catch (PrintException pe) {}


  }


  }