Java利用OpenOffice进行将word,excel转化成html解析到界面(上)

最近项目中遇到一个新需求,需要将Word和Excel文档解析成为html编码并在前台显示,word中包含图片信息,保留原文档基础样式,博主查找了相关资料后,利用OpenOffice第三方插件,以及自己封装了一些解析方法,功能已经实现,在此分为上下两部分做总结以便后期使用,希望可以帮助到大家,如有更好的建议望留言告知。

1.OpenOffice

1.软件下载

首先,去到官网根据自己的需求下载所需要的版本(我的版本是4.1.4)。
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第1张图片

2.软件安装

双击安装包 打开运行程序 这里是安装向导首界面 点击下一步按钮
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第2张图片
点击浏览按钮 选择安装目录路径 如图所示
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第3张图片
会自动检测系统中的插件 如果需要会自动安装
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第4张图片
输入使用的用户 以及选择用户权限 点击下一步按钮
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第5张图片
这里勾选通常安装 简单而且点击下一步
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第6张图片
是否在桌面上创建一个快捷方式 建议勾选
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第7张图片
这是安装完成界面 点击完成关闭安装向导
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第8张图片
PS:安装度娘上都有,博主帮你们移植过来,按照步骤即可。

3.启动OpenOffice服务

打开cmd命令窗口,进入OpenOffice安装目录下的program目录,如下图
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第9张图片
因为我的OpenOffice安装在D盘所以我先进的D盘,至于怎么在cmd里敲命令行我想大家都懂得,在这里我就不献丑了。

进入program目录后,继续执行(按原句执行不要更改)
soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard

如下图:
Java利用OpenOffice进行将word,excel转化成html解析到界面(上)_第10张图片
执行完成后可打开:任务管理器 进行查看服务是否启动 如下图:
记住每次重启电脑都得重新打开OpenOffice执行上述步骤,如果需要自启动请自行写自启动脚本


4.工具类

OpenOfficeUtils.java

package com.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ConnectException;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

/**
 * 任意文件转化为html
 * 
 * @author Mr.F
 * 
 */
public class OpenOfficeUtils {

    // 任意文件转html
    public  static void FileToHtml(String sourceFile, String htmlFile) { 

        File SourceFile = new File(sourceFile);
        File HtmlFile = new File(htmlFile);
        /*
         * 转换成pdf文件
         * 项目执行需要启动OpenOffice服务,在系统命令窗口执行命令。
         *  cd C:\Program Files (x86)\OpenOffice.org 4\program
         *  soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
         */
        if(SourceFile.exists()) {
            if(!HtmlFile.exists()) {
                OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
                try {
                    connection.connect();
                    DocumentConverter converter = new OpenOfficeDocumentConverter(connection);   
                    converter.convert(SourceFile, HtmlFile);
                    HtmlFile.createNewFile();
                    connection.disconnect();  
                    System.out.println("第二步:转换为HTML格式   路径" + HtmlFile.getPath());
                } catch (java.net.ConnectException e) {
                //} catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("OpenOffice服务未启动");
                    try {
                        throw e;
                    } catch (ConnectException e1) {
                        e1.printStackTrace();
                    }
                } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {
                    e.printStackTrace();
                    System.out.println("读取文件失败");
                    throw e;
                } catch (Exception e){
                    e.printStackTrace();
                    try {
                        throw e;
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }
            } else {
                System.out.println("已转换为HTML,无需再次转换");
            }
        } else {
            System.out.println("要转换的文件不存在");
        } 

    }    



    public static void main(String[] args) {

        FileToHtml("F:\\ceshi.xlsx", "F:\\ceshi1.html");
    }
}

PS:OpenOffice会自动识别Office版本,比如doc和docx以及xls和xlsx。

先告诉大家工具下载和使用情况,下篇会结合web工程给大家演示完整的功能,如有问题请留言告知,我们不止会New!

你可能感兴趣的:(Java相关技术)