java 将excel文件转换成pdf文件

  次阅读 来源:互联网(转载协议) 2016-01-19 13:00 我要评论(0)

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

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

第二种方式,原来是使用jacob来调用excel文件的另存为pdf的功能。主要是熟悉jacob的API即可。不需要精巧的编程技巧。

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

package com.bplead.module.sign.util;

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

public class TransferTool {

public static void els2pdf(String els,String pdf){

System.out.println("Starting excel...");

long start = System.currentTimeMillis();

ActiveXComponent app = new ActiveXComponent("Excel.Application");

try {

app.setProperty("Visible",false);

Dispatch workbooks = app.getProperty("Workbooks").toDispatch();

System.out.println("opening document:" + els);

Dispatch workbook = Dispatch.invoke(workbooks, "Open", Dispatch.Method, new Object[]{els, new Variant(false),new Variant(false)}, new int[3]).toDispatch();

Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {

pdf, new Variant(57), new Variant(false),

new Variant(57), new Variant(57), new Variant(false),

new Variant(true), new Variant(57), new Variant(true),

new Variant(true), new Variant(true) }, new int[1]);

Variant f = new Variant(false);

System.out.println("to pdf " + pdf);

Dispatch.call(workbook, "Close", f);

long end = System.currentTimeMillis();

System.out.println("completed..used:" + (end - start)/1000 + " s");

} catch (Exception e) {

System.out.println("========Error:Operation fail:" + e.getMessage());

}finally {

if (app != null){

app.invoke("Quit", new Variant[] {});

}

}

}

public static void main(String[] args) {

els2pdf("f:ProjectTemplate.xlsx","f:pdf.pdf");

}

}

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

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 长虹新款智能语音空调,告诉你空调也能玩Siri

    长虹新款智能语音空调,告诉你空调也能玩Siri

  • 第一批国家重点研发计划公布,旷视科技开启“五年行动”

    第一批国家重点研发计划公布,旷视科技开启“五年行动”

  • 让AI触手可及  Qualcomm携手创通联达推出全新终端侧AI开发套件

    让AI触手可及 Qualcomm携手创通联达推出全新终端侧AI开发套件

  • 品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

    品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...