`
jerry_lee
  • 浏览: 14613 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

用Java读写多种格式的电子文档的方案

阅读更多
  最近项目遇到一个问题,要用Java来对不同格式的电子文档(如:word excel pdf等)进行读写操作,实现数据的导入和导出功能,对于用Java来操作MS的方案有几种,譬如POI、JACOB等,但是否有一种好点的方法来统一对不同格式电子文档进行操作呢?
分享到:
评论
2 楼 jerry_lee 2008-04-29  
taelons 写道
对文件本身的操作就使用poi,jxl等开源项目,如果导入导出的格式不会经常发生变化,将“定义”和“执行”分开,例如在xml中定义导入导出的所有参数格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project SYSTEM "D:\eclipse\workspace\gds\src\dtsMap.dtd">
<project name="database conversion">
	<source-definition>
		<!--
		<source type="db" name="stock" url="jdbc:sybase:Tds:10.16.120.44:5000/pbzq" driver="com.sybase.jdbc2.jdbc.SybDriver" username="sa" password="888888" className="com.gds.util.dts.DatabaseDefine">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
		<source type="db" name="found" url="jdbc:sybase:Tds:10.16.120.44:5000/pbzq" driver="com.sybase.jdbc2.jdbc.SybDriver" username="sa" password="888888" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
	-->
		<!--
	 定义"源"位置,可以是数据库、ftp服务器、email服务期、共享文件夹等形式
	-->
		<source type="ftp" name="ftpsource" url="ip:port/dir" driver="" username="username" password="passowrd" className="com.gds.util.dts.FtpSource">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
	</source-definition>
	<dts-package>
		<package name="db2db" type="db2db" source="stock" destination="found" translator="com.gds.util.dts.DatabaseTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="select * from zhk" destination="cashaccount">
				<field-map source="fzjzh" destination="CASHACCOUNTID"/>
				<field-map source="fkhrq" destination="OPENACCOUNTDATE"/>
				<field-map source="fqkfs" destination="DRAWTYPE"/>
				<field-map source="substring(fzjzh,1,2)" destination="OFFICEID"/>
				<field-map source="" destination="CASHORIGIN"/>
				<set-property property="description" value="Example Data Source Configuration"/>
			</table-map>
			<table-map source="select * from tskhsfblb,zhzl where tskhsfblb.fzjzh = zhzl.fzjzh " destination="shareholderrebate">
				<field-map source="zhzl.fgddm" destination="SHAREHOLDER"/>
				<field-map source="convert(char(1),tskhsfblb.fscdm)+convert(char(2),tskhsfblb.fgplb)" destination="SHARETYPE"/>
				<field-map source="tskhsfblb.fssfl" destination="REBATE"/>
				<set-property property="description" value="Example Data Source Configuration"/>
			</table-map>
		</package>
		<package name="db2excel" type="db2excel" source="stock" destination="ftpsource" translator="com.gds.util.dts.Database2ExcelTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="select * from zhk" destination="testWorkbook.testSheet">
				<field-map source="fzjzh" destination="0,0"/>
				<field-map source="fkhrq" destination="0,1"/>
				<field-map source="fqkfs" destination="2,3"/>
				<field-map source="substring(fzjzh,1,2)" destination="4,8"/>
				<field-map source="test" destination="3,5"/>
			</table-map>
		</package>
		<package name="excel2db" type="excel2db" source="stock" destination="stock" translator="com.gds.util.dts.Excel2DatabaseTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="testWorkbook.testSheet" destination="cashaccount">
				<field-map source="0,0" destination="fzjzh"/>
				<field-map source="0,1" destination="fkhrq"/>
				<field-map source="2,3" destination="fqkfs"/>
				<field-map source="4,8" destination="fzjzh"/>
				<field-map source="3,5" destination="test"/>
			</table-map>
		</package>
	</dts-package>
</project>

楼上的老兄,我还是有点迷糊,能不能给个源码过来
1 楼 taelons 2008-04-25  
对文件本身的操作就使用poi,jxl等开源项目,如果导入导出的格式不会经常发生变化,将“定义”和“执行”分开,例如在xml中定义导入导出的所有参数格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project SYSTEM "D:\eclipse\workspace\gds\src\dtsMap.dtd">
<project name="database conversion">
	<source-definition>
		<!--
		<source type="db" name="stock" url="jdbc:sybase:Tds:10.16.120.44:5000/pbzq" driver="com.sybase.jdbc2.jdbc.SybDriver" username="sa" password="888888" className="com.gds.util.dts.DatabaseDefine">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
		<source type="db" name="found" url="jdbc:sybase:Tds:10.16.120.44:5000/pbzq" driver="com.sybase.jdbc2.jdbc.SybDriver" username="sa" password="888888" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
	-->
		<!--
	 定义"源"位置,可以是数据库、ftp服务器、email服务期、共享文件夹等形式
	-->
		<source type="ftp" name="ftpsource" url="ip:port/dir" driver="" username="username" password="passowrd" className="com.gds.util.dts.FtpSource">
			<set-property property="description" value="Example Data Source Configuration"/>
		</source>
	</source-definition>
	<dts-package>
		<package name="db2db" type="db2db" source="stock" destination="found" translator="com.gds.util.dts.DatabaseTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="select * from zhk" destination="cashaccount">
				<field-map source="fzjzh" destination="CASHACCOUNTID"/>
				<field-map source="fkhrq" destination="OPENACCOUNTDATE"/>
				<field-map source="fqkfs" destination="DRAWTYPE"/>
				<field-map source="substring(fzjzh,1,2)" destination="OFFICEID"/>
				<field-map source="" destination="CASHORIGIN"/>
				<set-property property="description" value="Example Data Source Configuration"/>
			</table-map>
			<table-map source="select * from tskhsfblb,zhzl where tskhsfblb.fzjzh = zhzl.fzjzh " destination="shareholderrebate">
				<field-map source="zhzl.fgddm" destination="SHAREHOLDER"/>
				<field-map source="convert(char(1),tskhsfblb.fscdm)+convert(char(2),tskhsfblb.fgplb)" destination="SHARETYPE"/>
				<field-map source="tskhsfblb.fssfl" destination="REBATE"/>
				<set-property property="description" value="Example Data Source Configuration"/>
			</table-map>
		</package>
		<package name="db2excel" type="db2excel" source="stock" destination="ftpsource" translator="com.gds.util.dts.Database2ExcelTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="select * from zhk" destination="testWorkbook.testSheet">
				<field-map source="fzjzh" destination="0,0"/>
				<field-map source="fkhrq" destination="0,1"/>
				<field-map source="fqkfs" destination="2,3"/>
				<field-map source="substring(fzjzh,1,2)" destination="4,8"/>
				<field-map source="test" destination="3,5"/>
			</table-map>
		</package>
		<package name="excel2db" type="excel2db" source="stock" destination="stock" translator="com.gds.util.dts.Excel2DatabaseTranslator" className="">
			<set-property property="description" value="Example Data Source Configuration"/>
			<table-map name="" source="testWorkbook.testSheet" destination="cashaccount">
				<field-map source="0,0" destination="fzjzh"/>
				<field-map source="0,1" destination="fkhrq"/>
				<field-map source="2,3" destination="fqkfs"/>
				<field-map source="4,8" destination="fzjzh"/>
				<field-map source="3,5" destination="test"/>
			</table-map>
		</package>
	</dts-package>
</project>

相关推荐

    完美解决方案:Java生成复杂Word文档.doc

    该方案通过使用 Office 2003 或 2007 编辑 Word 文档的样式,然后将其另存为 XML 格式,接着使用 FreeMarker 模板生成 Word 文档。这种方法可以生成完全符合 Office 标准的 Word 文档,样式和内容控制非常便利,打印...

    java api1.6中文文档chm

    7. **国际化与本地化**:`java.util.Locale`和`java.text`包支持多种语言环境,提供日期、时间、数字和货币格式的处理。 8. **XML处理**:`javax.xml`包提供了处理XML文档的API,如`DOM`、`SAX`解析器和`...

    Java通过模版生成word文档

    Apache POI是Java操作Microsoft Office格式文件的库,支持读写Word文档。 2. 创建模板:编写`.ftl`模板文件,定义文档结构,例如标题、段落、表格等,使用`${}`包裹需要动态填充的数据。 3. 配置FreeMarker:设置...

    网上电子商城Java

    综上所述,网上电子商城Java项目是一个集多种技术于一体的复杂系统,它不仅涉及到前端与后端的交互,还需要处理数据库、安全性、支付等多个方面的问题,体现了Java作为企业级开发的强大能力。通过学习和实践此类项目...

    java读写mpp文件的开源包

    它支持多种版本的Microsoft Project文件,包括.MPP和.MPT格式。在描述中提到的是`mpxj`的3.1版本,这是一个稳定且功能丰富的版本,能够帮助开发者轻松地处理项目数据。 使用`mpxj`,我们可以执行以下关键操作: 1....

    Java根据ftl模板生成多表格复杂性word文档

    Java使用FTL(FreeMarker Template Language)模板生成多表格复杂性Word文档是一项常见的技术需求,尤其是在需要自动生成报告或批量处理文档的场景中。FreeMarker是一个强大的、基于模板的Java库,它允许开发者将...

    D8读写器使用手册_D8_读写器使用手册_

    《D8读写器使用手册》是一份详细指导用户如何操作和配置D8读写器的文档,旨在帮助用户充分理解和高效利用该设备。这份手册通常包含产品介绍、硬件组成、安装步骤、连接方法、软件开发工具包(SDK)信息以及故障排除...

    Java JAI API文档

    JAI还支持多种图像文件格式的读写,如JPEG、TIFF等,使得数据交换更为便捷。同时,它的并行处理能力也使其在处理大型图像时表现优秀。总之,Java JAI API是Java平台上进行复杂图像处理的重要工具,值得开发者深入...

    java操纵xml文件的读写,并根据xml生成树型菜单

    4. **JDOM**: 一个开源的Java库,用于简化XML文档的操作,提供了一种介于DOM和SAX之间的中间解决方案。 5. **树型菜单**: 一种常见的UI设计模式,用于展示具有层级关系的数据。 #### 三、代码分析与知识点详解 ####...

    本人开发过程中用到的开发文档

    这些技术文档通常会涵盖各自领域的基本概念、API使用、最佳实践、常见问题和解决方案。对于Java,可能包括JDK API文档,深入讲解类库和API的使用方法;JavaScript和jQuery的文档则会介绍语法、API接口和实例;...

    Kettle java API

    这篇详细的知识点解释将深入探讨Kettle Java API的核心概念、使用场景和主要功能。 1. **Kettle Engine API**: Kettle引擎是整个平台的核心,负责执行转换(Transformations)和作业(Jobs)。通过Java API,...

    aspose-words-20.5-java.rar

    总的来说,Aspose.Words for Java是开发人员在Java环境中处理Word文档的强大工具,无论是在企业级应用还是个人项目中,都能提供灵活且高效的文档处理解决方案。通过慧都科技提供的资源,开发者可以深入了解并熟练...

    java记事本(实现全功能)

    另外,"Java文本编辑器程序设计说明书.doc"文件提供了详细的程序设计指南,涵盖了软件的设计思路、实现步骤、关键代码解释和可能遇到的问题及解决方案。这份说明书对于初学者来说是一份宝贵的资源,有助于理解和复现...

    基于Java的源码-OrientDB(基于Java可伸缩的文档数据库).zip

    此外,文档数据库的特性使得数据存储以JSON格式为主,便于快速读写和灵活查询。 在标签中提到了“软件/插件”,OrientDB作为一个数据库管理系统,可以被集成到各种应用程序中,作为后端数据存储解决方案。而“范文/...

    Java调用C#的DLL实现方案.rar

    在IT行业中,跨语言通信是一项常见的任务,尤其是在大型系统中,不同组件可能由不同语言编写。...提供的"Java调用C#的DLL实现方案.docx"文档应该会详细解释这些方法的步骤和示例代码,建议仔细阅读。

    JAVA动态生成word和pdf.doc

    2. Apache POI方案:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 CompoundDocument Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。他的Excel处理很强大,对于Word还局限于...

    java国际化官方指南

    当需要处理特定编码的文本文件时,可以使用java.io包中的Reader和Writer类,它们可以指定不同的字符编码,如UTF-8、GBK等,从而支持国际化文本的正确读写。 除了上述类和API,Java还提供了资源束(ResourceBundle)...

    java转为PDF的效果(openoffice)

    10. **替代方案**: 除了OpenOffice,还有其他Java库可以用来转换文档,比如PDFBox、iText和Aspose等,它们可能提供更直接的PDF操作,但可能不支持所有的Office文档格式。 了解这些知识点后,你可以根据具体需求选择...

    分布式搜索 elasticsearch 方案研究 - Java API

    **分布式搜索 Elasticsearch 方案研究 - Java API** Elasticsearch 是一款功能强大的开源搜索引擎,它基于 Lucene 库,提供了一个分布式、实时、可扩展的搜索和分析引擎。本方案主要探讨如何利用 Java API 来与 ...

Global site tag (gtag.js) - Google Analytics