html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

java 将excel文件转换成pdf文件_编程语言综合

[ ] 已经帮助:人解决问题

   最近做一个项目,需要把excel文件转换成pdf文件,经过我查资料,无非使用两种方式:1 POI+Itext 2 Jacob来调用excel另存功能。n8eHTML5中文学习网 - HTML5先行者学习网

  第一种方式,原理是使用POI来读取excel的内容,将其写到pdf文件中。实现难度有点大,主要是因为excel sheet结构不固定,内容也不固定,可能存在图片等,导致读excel比较复杂,真正实现还是比较复杂的。n8eHTML5中文学习网 - HTML5先行者学习网

  第二种方式,原来是使用jacob来调用excel文件的另存为pdf的功能。主要是熟悉jacob的API即可。不需要精巧的编程技巧。n8eHTML5中文学习网 - HTML5先行者学习网

  本文使用第二种方式,使用这种方式,需要在当前环境中安装office,pdf软件。建议安装office 2010版本。如果安装的07版本,还需要安装一个excel插件(SaveAsPDFandXPS.exe) 这个插件是微软官方的,链接如下:微软官方n8eHTML5中文学习网 - HTML5先行者学习网

  package com.bplead.module.sign.util;n8eHTML5中文学习网 - HTML5先行者学习网

  import com.jacob.activeX.ActiveXComponent;n8eHTML5中文学习网 - HTML5先行者学习网

  import com.jacob.com.Dispatch;n8eHTML5中文学习网 - HTML5先行者学习网

  import com.jacob.com.Variant;n8eHTML5中文学习网 - HTML5先行者学习网

  public class TransferTool {n8eHTML5中文学习网 - HTML5先行者学习网

  public static void els2pdf(String els,String pdf){n8eHTML5中文学习网 - HTML5先行者学习网

  System.out.println("Starting excel...");n8eHTML5中文学习网 - HTML5先行者学习网

  long start = System.currentTimeMillis();n8eHTML5中文学习网 - HTML5先行者学习网

  ActiveXComponent app = new ActiveXComponent("Excel.Application");n8eHTML5中文学习网 - HTML5先行者学习网

  try {n8eHTML5中文学习网 - HTML5先行者学习网

  app.setProperty("Visible",false);n8eHTML5中文学习网 - HTML5先行者学习网

  Dispatch workbooks = app.getProperty("Workbooks").toDispatch();n8eHTML5中文学习网 - HTML5先行者学习网

  System.out.println("opening document:" + els);n8eHTML5中文学习网 - HTML5先行者学习网

  Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{els, new Variant(false),new Variant(false)}, new int[3]).toDispatch();n8eHTML5中文学习网 - HTML5先行者学习网

  Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {n8eHTML5中文学习网 - HTML5先行者学习网

  pdf, new Variant(57), new Variant(false),n8eHTML5中文学习网 - HTML5先行者学习网

  new Variant(57), new Variant(57), new Variant(false),n8eHTML5中文学习网 - HTML5先行者学习网

  new Variant(true), new Variant(57), new Variant(true),n8eHTML5中文学习网 - HTML5先行者学习网

  new Variant(true), new Variant(true) }, new int[1]);n8eHTML5中文学习网 - HTML5先行者学习网

  Variant f = new Variant(false);n8eHTML5中文学习网 - HTML5先行者学习网

  System.out.println("to pdf " + pdf);n8eHTML5中文学习网 - HTML5先行者学习网

  Dispatch.call(workbook, "Close", f);n8eHTML5中文学习网 - HTML5先行者学习网

  long end = System.currentTimeMillis();n8eHTML5中文学习网 - HTML5先行者学习网

  System.out.println("completed..used:" + (end - start)/1000 + " s");n8eHTML5中文学习网 - HTML5先行者学习网

  } catch (Exception e) {n8eHTML5中文学习网 - HTML5先行者学习网

  System.out.println("========Error:Operation fail:" + e.getMessage());n8eHTML5中文学习网 - HTML5先行者学习网

  }finally {n8eHTML5中文学习网 - HTML5先行者学习网

  if (app != null){n8eHTML5中文学习网 - HTML5先行者学习网

  app.invoke("Quit", new Variant[] {});n8eHTML5中文学习网 - HTML5先行者学习网

  }n8eHTML5中文学习网 - HTML5先行者学习网

  }n8eHTML5中文学习网 - HTML5先行者学习网

  }n8eHTML5中文学习网 - HTML5先行者学习网

  public static void main(String[] args) {n8eHTML5中文学习网 - HTML5先行者学习网

  els2pdf("f://ProjectTemplate.xlsx","f://pdf.pdf");n8eHTML5中文学习网 - HTML5先行者学习网

  }n8eHTML5中文学习网 - HTML5先行者学习网

  }n8eHTML5中文学习网 - HTML5先行者学习网

  运行以上环境,需要下载jacob的包,该包还包含2个dll文件,一个是jacob-1.17-x64.dll,这个是64位的,还有一个是jacob-1.17-x86.dll文件,这个是32位的。将jar包包含到classpath目录,dll文件包含到jre/bin目录即可n8eHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助