刚到公司头儿就给我布置了任务,可以将word里的内容读取出来,持久化到数据库中。一开始觉得,用流读一下不就行了吗?后来发现没有这么简单。Word的.doc格式是不公开的,所以Java很难直接支持读.doc文件,网上的提供的信息也不多。有一个通过poi的组件来读取的,但是通过poi来读取excel的内容很方便,读取word实在是不给力了,具体原因apache官网也说了在poi中处理word模块的作者离开apache组织了(http://poi.apache.org/hwpf/index.html)。现在主要是面临三个问题:
第一,支持中文;第二,保证word03和word07兼容;第三,对图片表格等格式的内容都能取读出来。请教高人后得知,打开word后可以直接另存为xml的格式,只要能得到xml的格式,就可以通过Dom4j解析得到内容。但是如何通过程序将word转化成xml呢?
网上查了一下,免费的主要有两种方法:
1,通过jacob来实现(http://danadler.com/jacob/).jacob是在java与微软的com组件之间的桥梁,通过使用jacob自带的dll动态链接库通过jni的方式实现了在sun java平台上的程序对com调用.但是这种方式未能解决word07转化为Xml的问题,所以只能弃之。
2,通过jodconveter来实现转化(http://www.artofsolving.com/opensource/jodconverter)。这种方式实现起来比较麻烦,操作有点繁琐,但是能解决全部上述问题。jobconveter团队的才智表示敬佩:通过启动OpenOffice.org的服务端口,实现程序操作opeanoffice实现文件的转换。
具体的实现方式在http://nopainnogain.iteye.com/blog/819432 此文中已有详细描述.
另外贴上我的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormatRegistry;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
public class test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
test t = new test();
//File in = new File("d:\\mytest\\test1.pdf");
//File out = new File("d:\\mytest\\test11.html");
FileInputStream input = new FileInputStream("d:\\mytest\\test11.pdf");
FileOutputStream output = new FileOutputStream("d:\\mytest\\test11.doc");
t.convert(input, output);
}
public void convert(File input, File output) throws Exception
{
OpenOfficeConnection conn = new SocketOpenOfficeConnection("localhost", 8100);
conn.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(conn);
converter.convert(input, output);
conn.disconnect();
}
public void convert(InputStream input, OutputStream output) throws Exception
{
OpenOfficeConnection conn = new SocketOpenOfficeConnection("localhost", 8100);
conn.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(conn);
DocumentFormatRegistry registry = new DefaultDocumentFormatRegistry();
converter.convert(input, registry.getFormatByFileExtension("pdf"), output, registry.getFormatByFileExtension("doc"));
conn.disconnect();
}
}
附件里有jodconverter的zip包,可以在这里直接下了,openoffice的安装文件就不贴了,到官网下就行(http://www.openoffice.org/).
分享到:
相关推荐
java实现word文档到xml文档转换浅析
在IT行业中,将Word文档转换为XML是一种常见的数据交换方式,尤其在Android应用程序与服务器进行交互时。XML(可扩展标记语言)因其结构清晰、易于解析的特性,常被用作数据传输和存储的标准格式。以下我们将深入...
将Word文档转换为XML,我们可以更方便地查看和编辑其内部结构,如段落、样式、表格和图像等。这通常通过编程方式实现,例如使用Microsoft Office的Open XML SDK或者Python的python-docx库。转换后的XML文件可以使用...
首先,我们了解XSLT(Extensible Stylesheet Language Transformations)是一种转换XML文档的语言,它可以将XML数据按照预定义的样式转换为其他格式,如HTML、PDF或Word文档。这种方法的优点在于它不依赖于特定的...
### Java实现XML文档到Word文档转换的关键技术及实践 #### XML简介与应用 XML(Extensible Markup Language,可扩展标记语言)是一种标记语言,旨在定义一套规则,通过这些规则将文档划分为多个部分并对其进行标记...
在用freemaker模板的时候,第一步都会将word转换为xml格式文件,解析成xml文件经常会出现(个别、很多)字段占位符、变量值被分离,被分离的字段少的还好能手动改改,字段多了能让你直接发疯,此代码脚本轻松解决...
"word to pdf word xml to pdf"这个主题聚焦于将Microsoft Word文档转换为PDF格式,以及XML数据如何转化为PDF。下面将详细阐述这两个过程。 首先,我们来看“word to pdf”转换。Microsoft Word是一款广泛使用的...
3. **转换为XML文件**:将获取到的XML内容保存到一个新的XML文件中,可以使用VB内置的`System.IO.File`类的`WriteAllText`方法。 4. **从XML文件读取数据**:使用VB的XML处理能力,如`System.Xml.Linq.XDocument`类...
因此,将XML转换为Word涉及到解析XML并生成符合Word格式规范的内容。 3. **iText**:这是一个Java库,专门用于创建和修改PDF文档,但也可以用于生成Word文档。iText提供了一系列API,使得开发者能够构建复杂的文档...
Xml生成word,本文档是讲述了如何借助WML2XSLT.EXE工具生成xslt,将xml生成word文档
这个压缩包“Java通过word编辑为xml和ftl格式的模板创建导出word文档 .zip”提供了一个示例项目,用于演示如何使用Java编程语言来操作Word文档,并将其内容转化为XML和FTL(FreeMarker)模板格式。以下将详细介绍这...
后来发现VisualStudio里面居然可以把代码里面的XMl注释生成文件,在网上又看见个可以把XML文件转换成html文档查看的,就考虑自己写一个程序直接生成Word文档。 由于对Word编程也不熟,所以Word文档那个类也是在网上...
在IT行业中,转换文档格式是一项常见的任务...总的来说,Java将Word转化为HTML涉及到对Word文档结构的理解,以及选择合适的库进行操作。通过使用Apache POI或其他库,开发者可以实现自定义的转换逻辑,满足特定的需求。
为了真正实现这一目标,你需要将“保存类型”设置为“Word 2003 XML 文档”,此时“仅保存数据”选项才会真正剥离掉Word格式,生成更简洁的XML文件。 6. **利用XML结构任务窗格**:在Word 2007中,有一个名为“XML...
3. **转换和优化**:Aspose提供了一系列转换和优化工具,可以将文档转换为更兼容的格式,或者优化已有的内容,确保在各种版本的Office中都能正常打开。 4. **合并模板和数据**:如果你的模板和数据是分开的,Aspose...
这些核心转换将Word XML转换为符合HTMLBook规范HTML,并由少数其他ruby和XSL转换建立,以创建可插入较大的Macmillan工作流程HTML文件。 具体来说,这些XSL转换是bookmaker_htmlmaker流程的一部分-。 对于格式良好...
这种格式将文档内容分解为多个组件,包括XML文件、图像、样式表和其他支持文件,都存储在一个压缩的ZIP文件中。这使得用户可以查看和编辑文档的内部结构,便于自动化处理和数据提取。 3. **文件结构**: - `...
例如,你可以方便地将Word文档转换为PDF、HTML或其他文本格式,同时保持原有的布局和样式。 2. **Aspose.Cells**: 这个组件是处理Excel电子表格的主要工具,对应的库文件为`aspose-cells-8.5.2.jar`,版本为8.5.2。...
本主题聚焦于如何利用Apache POI库将Word文档转换为HTML格式,从而实现在线阅读。Apache POI是一个强大的开源Java库,它允许开发者读取、写入以及创建Microsoft Office格式的文件,包括Word(.doc)文档。 首先,让...
4. **XML序列化和反序列化**:为了将Word文档内容转换为XML,我们需要对文档内容进行序列化。C#中的`System.Xml.Serialization`命名空间提供了`XmlSerializer`类,可以方便地完成这个任务。 5. **异常处理**:在...