- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运用jxl将复杂excel报表导入数据库的设计与实现
【摘 要】在许多检测单位的办公自动化系统中,需要使用到检测单位的大量检测数据,而这些数据存储于excel文件中,由于不同类型产品的检测报表存在一定差异,使用简单的方式读取excel文件存在代码可重用性差的问题。在分析各种报表的结构后,运用jxl和xml技术,实现了动态的将excel报表导入数据库的功能,并且适用于各种不同的报表结构。
【关键词】excel;检测报表;jxl;xml
0 引言
在日常工作中,需要将大量包含检测数据的excel检测报表导入到许多检测单位的办公自动化系统,为了方便对检测数据的使用,可以使用jxl来对excel文件进行操作。jxl是一个广泛用于读写excel文件的优秀的开源工具。Jxl提供了一种简单的读取excel文件的方法,该方法的基本思想是:通过jxl中的Workbook获取表中的sheet,然后通过sheet获取表中的每一个单元格cell,最后调用cell的getContents()方法获取数据。该方法可以快速的获取数据,但获取的数据不能被灵活的使用。为了灵活使用表中的数据,实现对表中的每一个数据进行操作,可将表中的数据存入数据库中,然后系统便可自由的在数据库中获取相应的信息。
基于以上分析,结合各种检测报表的结构之间存在的共同特性,运用xml作为中介,实现了动态将报表导入数据库的功能,解决了代码重用性差的问题,系统使用人员只需要知道表结构,就可以将不同报表动态存入数据库中,不需要懂得代码编写。
1将excel检测报表中数据导入xml
通过对不同检测报表分析,检测报表与具有常见报表相同的结构,包括4个部分:标题、表头、表体、表尾。标题、表头及表尾具有一键一值的关系,表体中的内容可由横纵坐标共同确定。
根据报表结构特点以及具有的键值特性,将报表抽象为3个Java类,KeyNameSet类封装键名、KeyValueSet类封装每个键对应的值、TableNameSet类用于封装不同的表名。
根据以上分析,按照表格特点配置xml文件,将表格中数据存入指定的xml文件中。这里的配置并不需要配置人员懂得xml的运用,只需要根据程序运行提升进行配置即可,下面给出一个配置举例。
输入选择的sheet的索引位置:0
输入您要配置tag:table
输入您要配置key:报表1
结束xml的配置吗?yes/no:no
输入您要配置tag:head
输入您要配置key:0001表1A
输入您的值x偏移量:
输入您的值y偏移量:
结束xml的配置吗?yes/no:no
输入您要配置tag:head
输入您要配置key:A
输入您的值x偏移量:1
输入您的值y偏移量:0
结束xml的配置吗?yes/no:yes
配置成功,已生成配置!
通过以上配置,将生成一个xml配置文件,文件内容如下:
配置中tag即表示xml文件中的标签,本文中tag的取值有table(标题),head(表头),body(表体),foot(表尾),body-col(表体列),body-row(表体行),这些定义是根据前面分析的表结构来定义的。偏移量表示所存入的键对应的值所在excel表中的位置。
2将xml中的数据导入数据库
通过两个步骤实现该功能,第一步,将前一节配置所得的xml文件中的所有键值对都存入数据库;第二步,根据存入数据库中的键值,查找excel文件中的表格内容,存入数据库。
/*将xml配置存入数据库*/
public static void toStroeKeys(String xmlFile){
File file = new File(xmlFile);
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
XmlLoader tbLoader = XmlManeger.getTable(doc);
ArrayList heads = XmlManeger.getKeys(doc,XmlManeger.head);
Connection conn = DbUtil.getConn();
… …
int t
文档评论(0)