首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java通过jacob对excel,word进行打印等操作

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

www.jz123.cn  2010-01-05   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

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

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

 


 view plaincopy to clipboardprint?
  /**
  * @author xjj
  * 说明:打印类
  * email: exceljava@163.com
  * @date Oct 29, 2008
  */
  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) {}
  }
  }
  /**
  * @author xjj
  * 说明:打印类
  * email: exceljava@163.com
  * @date Oct 29, 2008
  */
  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) {}
  }
  }

  通过测试,始终无法找到打印机,运行时报定义的:找不到打印机。听说,局域网内的打印机无法链接,打印机只能连在本机上。而测试的打印机刚好在局域网内而不在本机上。然后,查看了下文档,忽然发现,java自带的打印只对plain文本,gif,jpeg,pdf等支持,而对excle,word等是不支持的。看来要学会放弃,goodbye java print。

上一篇:JAVA初始化的陷阱 下一篇:Java调用com组件操作word使用总结(jacob)

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图