java word转成表格_java将Word/Excel/PDF文件转换成HTML整理

本文介绍了使用Jacob库将Java中的Word和Excel转换为HTML,以及通过XPDF将PDF转换为HTML的方法,包括详细步骤和代码示例。
摘要由CSDN通过智能技术生成

项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:

一、使用Jacob转换Word,Excel为HTML

“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。”

首先下载Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未测试),与先前的Jacob1.7差别不大

1、将压缩包解压后,Jacob.jar添加到Libraries中;

2、将Jacob.dll放至“WINDOWS\SYSTEM32”下面。

需要注意的是:

【使用IDE启动Web服务器时,系统读取不到Jacob.dll,例如用MyEclipse启动Tomcat,就需要将dll文件copy到MyEclipse安装目录的“jre\bin”下面。

一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】

新建类:

1

4f1150b881333f12a311ae9ef34da474.pngpublicclassJacobUtil21fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{3d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalintWORD_HTML=8;4d18c02628675d0a2c816449d98bda930.png5d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalintWORD_TXT=7;6d18c02628675d0a2c816449d98bda930.png7d18c02628675d0a2c816449d98bda930.pngpublicstaticfinalintEXCEL_HTML=44;8d18c02628675d0a2c816449d98bda930.png997e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**10d18c02628675d0a2c816449d98bda930.png     * WORD转HTML11d18c02628675d0a2c816449d98bda930.png     *@paramdocfile WORD文件全路径12d18c02628675d0a2c816449d98bda930.png     *@paramhtmlfile 转换后HTML存放路径13ecedf933ec37d714bd4c2545da43add2.png*/14d18c02628675d0a2c816449d98bda930.pngpublicstaticvoidwordToHtml(String docfile, String htmlfile)1597e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{16d18c02628675d0a2c816449d98bda930.png        ActiveXComponent app=newActiveXComponent("Word.Application");//启动word17d18c02628675d0a2c816449d98bda930.pngtry1897e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{19d18c02628675d0a2c816449d98bda930.png            app.setProperty("Visible",newVariant(false));20d18c02628675d0a2c816449d98bda930.png            Dispatch docs=app.getProperty("Documents").toDispatch();21d18c02628675d0a2c816449d98bda930.png            Dispatch doc=Dispatch.invoke(22d18c02628675d0a2c816449d98bda930.png                    docs,23d18c02628675d0a2c816449d98bda930.png"Open",24d18c02628675d0a2c816449d98bda930.png                    Dispatch.Method,2597e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifnewObject[]9b8a8a44dd1c74ae49c20a7cd451974e.png{ docfile,newVariant(false),26ecedf933ec37d714bd4c2545da43add2.pngnewVariant(true) },newint[1]).toDispatch();2797e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            Dispatch.invoke(doc,"SaveAs", Dispatch.Method,newObject[]9b8a8a44dd1c74ae49c20a7cd451974e.png{28ecedf933ec37d714bd4c2545da43add2.png                    htmlfile,newVariant(WORD_HTML) },newint[1]);29d18c02628675d0a2c816449d98bda930.png            Variant f=newVariant(false);30d18c02628675d0a2c816449d98bda930.png            Dispatch.call(doc,"Close", f);31ecedf933ec37d714bd4c2545da43add2.png        }32d18c02628675d0a2c816449d98bda930.pngcatch(Exception e)3397e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{34d18c02628675d0a2c816449d98bda930.png            e.printStackTrace();35ecedf933ec37d714bd4c2545da43add2.png        }36d18c02628675d0a2c816449d98bda930.pngfinally3797e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{3897e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            app.invoke("Quit",newVariant[]9b8a8a44dd1c74ae49c20a7cd451974e.png{});39ecedf933ec37d714bd4c2545da43add2.png        }40ecedf933ec37d714bd4c2545da43add2.png    }41d18c02628675d0a2c816449d98bda930.png4297e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**43d18c02628675d0a2c816449d98bda930.png     * EXCEL转HTML44d18c02628675d0a2c816449d98bda930.png     *@paramxlsfile EXCEL文件全路径45d18c02628675d0a2c816449d98bda930.png     *@paramhtmlfile 转换后HTML存放路径46ecedf933ec37d714bd4c2545da43add2.png*/47d18c02628675d0a2c816449d98bda930.pngpublicstaticvoidexcelToHtml(String xlsfile, String htmlfile)4897e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{49d18c02628675d0a2c816449d98bda930.png        ActiveXComponent app=newActiveXComponent("Excel.Application");//启动word50d18c02628675d0a2c816449d98bda930.pngtry5197e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{52d18c02628675d0a2c816449d98bda930.png            app.setProperty("Visible",newVariant(false));53d18c02628675d0a2c816449d98bda930.png            Dispatch excels=app.getProperty("Workbooks").toDispatch();54d18c02628675d0a2c816449d98bda930.png            Dispatch excel=Dispatch.invoke(55d18c02628675d0a2c816449d98bda930.png                    excels,56d18c02628675d0a2c816449d98bda930.png"Open",57d18c02628675d0a2c816449d98bda930.png                    Dispatch.Method,5897e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifnewObject[]9b8a8a44dd1c74ae49c20a7cd451974e.png{ xlsfile,newVariant(false),59ecedf933ec37d714bd4c2545da43add2.pngnewVariant(true) },newint[1]).toDispatch();6097e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            Dispatch.invoke(excel,"SaveAs", Dispatch.Method,newObject[]9b8a8a44dd1c74ae49c20a7cd451974e.png{61ecedf933ec37d714bd4c2545da43add2.png                    htmlfile,newVariant(EXCEL_HTML) },newint[1]);62d18c02628675d0a2c816449d98bda930.png            Variant f=newVariant(false);63d18c02628675d0a2c816449d98bda930.png            Dispatch.call(excel,"Close", f);64ecedf933ec37d714bd4c2545da43add2.png        }65d18c02628675d0a2c816449d98bda930.pngcatch(Exception e)6697e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{67d18c02628675d0a2c816449d98bda930.png            e.printStackTrace();68ecedf933ec37d714bd4c2545da43add2.png        }69d18c02628675d0a2c816449d98bda930.pngfinally7097e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{7197e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif            app.invoke("Quit",newVariant[]9b8a8a44dd1c74ae49c20a7cd451974e.png{});72ecedf933ec37d714bd4c2545da43add2.png        }73ecedf933ec37d714bd4c2545da43add2.png    }74d18c02628675d0a2c816449d98bda930.png758f1ba5b45633e9678d1db480c16cae3f.png}764f1150b881333f12a311ae9ef34da474.png

当时我在找转换控件时,发现网易也转载了一偏关于Jacob使用帮助,但其中出现了比较严重的错误:String htmlfile = "C:\\AA";

只指定到了文件夹一级,正确写法是String htmlfile = "C:\\AA\\xxx.html";

到此WORD/EXCEL转换HTML就已经差不多了,相信大家应该很清楚了:)

二、使用XPDF将PDF转换为HTML

2、下载中文支持包

3、下载pdftohtml支持包

4、解压调试

1) 先将xpdf-3.02pl2-win32.zip解压,解压后的内容可根据需要进行删减,如果只需要转换为txt格式,其他的exe文件可以删除,只保留pdftotext.exe,以此类推;

2) 然后将xpdf-chinese-simplified.tar.gz解压到刚才xpdf-3.02pl2-win32.zip的解压目录;

3) 将pdftohtml-0.39-win32.tar.gz解压,pdftohtml.exe解压到xpdf-3.02pl2-win32.zip的解压目录;

4) 目录结构:

+---[X:\xpdf]

|-------各种转换用到的exe文件

|

|-------xpdfrc

|

+------[X:\xpdf\xpdf-chinese-simplified]

|

|

+-------很多转换时需要用到的字符文件

xpdfrc:此文件是用来声明转换字符集对应路径的文件

5) 修改xpdfrc文件(文件原名为sample-xpdfrc)

修改文件内容为:

Txt代码

d7d454600f77758df47d870acbf00b9c.png 

7a1e7afc0f2addbbdb746966b60e9e4a.png

4f1150b881333f12a311ae9ef34da474.png#-----begin Chinese Simplified supportpackage4f1150b881333f12a311ae9ef34da474.pngcidToUnicode    Adobe-GB1       xpdf-chinese-simplified\Adobe-GB1.cidToUnicode   

4f1150b881333f12a311ae9ef34da474.pngunicodeMap      ISO-2022-CN     xpdf-chinese-simplified\ISO-2022-CN.unicodeMap   

4f1150b881333f12a311ae9ef34da474.pngunicodeMap      EUC-CN          xpdf-chinese-simplified\EUC-CN.unicodeMap   

4f1150b881333f12a311ae9ef34da474.pngunicodeMap  GBK    xpdf-chinese-simplified\GBK.unicodeMap   

4f1150b881333f12a311ae9ef34da474.pngcMapDir         Adobe-GB1       xpdf-chinese-simplified\CMap   

4f1150b881333f12a311ae9ef34da474.pngtoUnicodeDir                    xpdf-chinese-simplified\CMap   

4f1150b881333f12a311ae9ef34da474.pngfontDir  C:\WINDOWS\Fonts   

4f1150b881333f12a311ae9ef34da474.pngdisplayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf   

4f1150b881333f12a311ae9ef34da474.png#-----end Chinese Simplified supportpackage4f1150b881333f12a311ae9ef34da474.png

6) 创建bat文件pdftohtml.bat(放置的路径不能包含空格)

内容为:

Txt代码

d7d454600f77758df47d870acbf00b9c.png 

7a1e7afc0f2addbbdb746966b60e9e4a.png

4f1150b881333f12a311ae9ef34da474.png@echo off   

4f1150b881333f12a311ae9ef34da474.pngset folderPath=%14f1150b881333f12a311ae9ef34da474.pngset filePath=%24f1150b881333f12a311ae9ef34da474.pngcd/d%folderPath%4f1150b881333f12a311ae9ef34da474.pngpdftohtml-enc GBK%filePath%4f1150b881333f12a311ae9ef34da474.pngexit

7) 创建类

JAVA代码

4f1150b881333f12a311ae9ef34da474.pngpublicclassConvertPdf   

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngprivatestaticString INPUT_PATH;   

d18c02628675d0a2c816449d98bda930.pngprivatestaticString PROJECT_PATH;   

d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.pngpublicstaticvoidconvertToHtml(String file, String project)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png        INPUT_PATH=file;   

d18c02628675d0a2c816449d98bda930.png        PROJECT_PATH=project;   

d18c02628675d0a2c816449d98bda930.pngif(checkContentType()==0)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png            toHtml();   

ecedf933ec37d714bd4c2545da43add2.png        }ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.pngprivatestaticintcheckContentType()   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png        String type=INPUT_PATH.substring(INPUT_PATH.lastIndexOf(".")+1, INPUT_PATH.length())   

d18c02628675d0a2c816449d98bda930.png                .toLowerCase();   

d18c02628675d0a2c816449d98bda930.pngif(type.equals("pdf"))   

d18c02628675d0a2c816449d98bda930.pngreturn0;   

d18c02628675d0a2c816449d98bda930.pngelsed18c02628675d0a2c816449d98bda930.pngreturn9;   

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.pngprivatestaticvoidtoHtml()   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngif(newFile(INPUT_PATH).isFile())   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngtry97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                String cmd="cmd /c start X:\\pdftohtml.bat \""+ PROJECT_PATH +"\"\""+ INPUT_PATH +"\"";   

d18c02628675d0a2c816449d98bda930.png                Runtime.getRuntime().exec(cmd);   

ecedf933ec37d714bd4c2545da43add2.png            }d18c02628675d0a2c816449d98bda930.pngcatch(IOException e)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                e.printStackTrace();   

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        }ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

String cmd = "....";此处代码是调用创建的bat文件进行转换

8) 测试转换

JAVA代码

d7d454600f77758df47d870acbf00b9c.png 

7a1e7afc0f2addbbdb746966b60e9e4a.png

4f1150b881333f12a311ae9ef34da474.pngpublicstaticvoidmain(String[] args)   

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png    ConvertPdf.convertToHtml("C:\\test.pdf","X:\\xpdf");   

8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

posted on 2011-04-20 14:26 方涛升 阅读(14514) 评论(3)  编辑  收藏 所属分类: j2ee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值