Java-jacob-文件转HTML
Java-jacob-文件转HTML:
下载jacob的jar包,然后举个例子。
public static final int WORD_HTML = 8; public static final int WORD_TXT = 7; public static final int EXCEL_HTML = 44; /**
* WORD转HTML
*
* @param docfile
* WORD文件全路径
* @param htmlfile
* 转换后HTML存放路径
*/
public static void wordToHtml(String docfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
try {
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(WORD_HTML) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
} /**
* EXCEL转HTML
*
* @param xlsfile
* EXCEL文件全路径
* @param htmlfile
* 转换后HTML存放路径
*/
public static void excelToHtml(String xlsfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word
try {
app.setProperty("Visible", new Variant(false));
Dispatch excels = app.getProperty("Workbooks").toDispatch();
Dispatch excel = Dispatch.invoke(
excels,
"Open",
Dispatch.Method,
new Object[] { xlsfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(EXCEL_HTML) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(excel, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
} public static void main(String[] args) {
excelToHtml(
"D:\\work\\apache-tomcat-6.0.36\\webapps\\ReportSystem\\upload\\1374758916167.xls",
"D:\\work\\apache-tomcat-6.0.36\\webapps\\ReportSystem\\upload\\1374758916167.html");
}
Jacob把Word Excel PPT转成Html
首先,必须将jacob-1.15-M3-x86.dll这个文件(视版本而定,在32位xp系统中使用该文件,在64位系统中,如win7,就得使用该文件jacob-1.15-M3-x64.dll了)拷贝到C:\Program Files\Java\jdk1.6.0_04\jre\bin的目录下,然后将jacob.jar在添加到C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib的目录下,在项目中导入jacob.jar即可使用下面程序:
1.word转html
Word转起来还是比较容易的,不会出什么问题,转换之后进程自动关闭。
public class Word2Html {
public static void change(String filename, String htmlFilename) {
ActiveXComponent xl = new ActiveXComponent("Word.Application");
//打开一个word,不显示窗口
try {
Dispatch.put(xl, "Visible", new Variant(false));
Object workbooks = xl.getProperty("Documents").toDispatch();
Object workbook = Dispatch.call((Dispatch) workbooks, "Open",
filename).toDispatch();
Dispatch.invoke((Dispatch) workbook, "SaveAs", Dispatch.Method,
new Object[] { htmlFilename, new Variant(8) }, new int[1]);
Variant f = new Variant(false);
//Close关闭文件,不关闭窗口
Dispatch.call((Dispatch) workbooks, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 调用office关闭方法,关闭窗口和word进程
xl.invoke("Quit", new Variant[] {});
xl = null;
}
}
public static void main(String[] args) {
Word2Html.change("d:/a.doc", "d:/a");
}
}
因为word转html之后,word进程自动关闭,所以在finally中不写关闭进程代码,但在excel和ppt转换后进程不会自动关闭,要加上关闭进程代码。
2.Excel转html
Excel最头疼的就是转换完之后,进程不会释放,而且每一次转换都会加一个进程,崩溃!!
无奈之下不得不在finally中杀掉excel进程。
public class Excel2Html {
public static void change(String filename, String htmlFilename) {
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
try {
Dispatch.put(xl, "Visible", new Variant(false));
//打开一个Excel,不显示窗口
Object workbooks = xl.getProperty("workbooks").toDispatch();
Object workbook = Dispatch.call((Dispatch) workbooks, "Open",
filename).toDispatch();
Dispatch.invoke((Dispatch) workbook, "SaveAs", Dispatch.Method,
new Object[] { htmlFilename, new Variant(44) }, new int[1]);
Dispatch.call((Dispatch) workbooks, "Close");
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[] {});
xl = null;
Process process;
int pid = 0;
try {
process = Runtime.getRuntime().exec("tasklist");
Scanner in = new Scanner(process.getInputStream());
while (in.hasNextLine()) {
String p = in.nextLine();
// 打印所有进程
System.out.println(p);
if (p.contains("EXCEL.EXE")) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < p.length(); i++) {
char ch = p.charAt(i);
if (ch != ' ') {
buf.append(ch);
}
}
// 打印pid,根据pid关闭进程
System.out.println(buf.toString().split("Console")[0]
.substring("EXCEL.EXE".length()));
pid = Integer.parseInt(buf.toString().split("Console")[0]
.substring("EXCEL.EXE".length()));
Runtime.getRuntime().exec("tskill"+" "+pid);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Excel2Html.change("d:/b.xls", "d:/b");
}
}
3.PPT转html
PPT转html最头疼的就是new Variant(false)会报错,无奈只能设成true,然后在finally中杀掉powerpnt进程。
public class Ppt2Html {
public static void change(String filename, String htmlFilename) {
ActiveXComponent xl = new ActiveXComponent("Powerpoint.Application");
try {
Dispatch.put(xl, "Visible", new Variant(true));
//打开一个PPT,显示窗口,PPT的不显示就会报错,狂晕!
Object workbooks = xl.getProperty("Presentations").toDispatch();
Object workbook = Dispatch.call((Dispatch) workbooks, "Open",
filename).toDispatch();
Dispatch.invoke((Dispatch) workbook, "SaveAs", Dispatch.Method,
new Object[] { htmlFilename, new Variant(20) }, new int[1]);
//Variant f = new Variant(false);
//Dispatch.call((Dispatch) workbooks, "Close",f);
//PPT的加这两行会报错,干脆注释上,反正在下面也关闭进程
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[] {});
xl = null;
Process process;
int pid = 0;
try {
process = Runtime.getRuntime().exec("tasklist");
Scanner in = new Scanner(process.getInputStream());
while (in.hasNextLine()) {
String p = in.nextLine();
// 打印所有进程
System.out.println(p);
if (p.contains("POWERPNT.EXE")) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < p.length(); i++) {
char ch = p.charAt(i);
if (ch != ' ') {
buf.append(ch);
}
}
// 打印pid,根据pid关闭进程
System.out.println(buf.toString().split("Console")[0]
.substring("POWERPNT.EXE".length()));
pid = Integer
.parseInt(buf.toString().split("Console")[0]
.substring("POWERPNT.EXE".length()));
Runtime.getRuntime().exec("tskill" + " " + pid);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Ppt2Html.change("d:/c.ppt", "d:/c");
}
}
Java-jacob-文件转HTML的更多相关文章
- java创建文件和目录
java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报 分类: JAVA基础(10) 版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...
- java之文件基本操作
java之文件基本操作 1 使用 BufferedReader 在控制台读取字符 public static void readChar() throws IOException{ char c; I ...
- java中文件的I/O操作
java中文件的读写操作 (一) (1)java中文件的字节转成字符读操作 FileInputStream fStream = new FileInputStream("test.txt&q ...
- java进行文件上传,带进度条
网上看到别人发过的一个java上传的代码,自己写了个完整的,附带源码 项目环境:jkd7.tomcat7. jar包:commons-fileupload-1.2.1.jar.commons-io-1 ...
- Java将文件转为字节数组
Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列 ...
- Java的文件读写操作
file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...
- java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
- Java Class文件详解
作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) Java Class文件中包含以下信息: [+]view code ClassFile { u4 magic; ...
- Java api 入门教程 之 JAVA的文件操作
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
建立好一个Maven项目后,如果Java Resources资源文件下没有src/main/java文件夹,并且在手动创建这个文件时提示“已存在文件”. 这说明,在这个项目配置中已经有了src/m ...
随机推荐
- 可视化-echarts流向图制作
案例: http://www.internetke.com/jsEffects/2018040406/ 前段时间用echarts做了流程图,在此记录下制作步骤. 一.Echarts是什么 Echart ...
- 用户认证--auth模块实现
转载文章,如有不妥之处请谅解 相关介绍 auth auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和admin模块配合使用, 快速建立网站的管 ...
- PHP常见的一些问题总结(收藏)
本篇文章给大家带来的内容是关于PHP常见的一些问题总结(收藏),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 字符串定义的时候单引号和双引号有什么区别? 单引号加载速度比双引号 ...
- webserver
1. 控制台,浏览器输入http://localhost:8080/ using System; using System.Collections; using System.IO; using Sy ...
- ProcessHacker学习笔记
ProcessHacker学习笔记 ProcessHacker是一款拥有windows任务管理器的开源软件.学习该软件,可增长windows操作系统多方面系统机制知识和性能统计设计的能力. 1.获取进 ...
- HQL数据查询基础
HQL定义 1.Hibernate Query Language, Hibernate查询语言 2.HQL是面向对象的查询语言(HQL查询的主体是映射配置的持久化类及其属性而SQL查询主体是数据库表) ...
- CentOS查找目录或文件
查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查找关键字 -print 如果需要更进一步的了解,可以参看Linux的命令 ...
- 关于esp32的系统初始化启动过程及设计学习方法
对于esp32,其开发程序中有且只能有一个app_main函数,该函数是用户程序的入口,这在没有调用FreeRTOS的系统中相当于函数main,但其实在app_main之前,系统还有一段初始化的过程, ...
- azkaban disable 停用部分工作流
在使用azkaban作为调度工具的时候,难免遇到只需要跑工作流某部分的情况,这时需要用到停用部分工作的操作, 如图:
- 剑指offer编程题Java实现——面试题14调整数组顺序使奇数位于偶数之前
题目: 输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有的奇数位于数组的前半部分,偶数位于数组的后半部分. 解题思路:数组中维护两个指针,第一个指针初始化时候指向数组头部,第二个指针初 ...