Java开源思想&技术--xlSQL (关键字: Excel,Java,SQL)
2005-11-29 16:13
369 查看
首先,说明xlSQL的用途,在Java系统中通过SQL来操作Excel,就像操作数据库那样。
当项目处于Phase1时,由于对Apache组织的POI比较熟练,本人写了个专门基于它的一个Component,以实现对Excel文件的操作。同时,又在服务器端为每张Excel创建了一个Table以映射,目的很简单,提高了速度和安全性能,当然这有着很大的弊端。
后来,果然项目升级了,虽然可以为每个新的Excel动态Create Table,但是如果面对成千上万的Excel文件,是否要考虑考虑?我从Outlook的mail历史中,找到之前DM Frank发给我的一封信,xlSQL的简单用法,Research开始了。。。
xlSQL最新版本是Y7,从网上搜索来看,使用的人不多,少的可怜的文档,甚至他的官方网站也关了(后来还是开了),也许真的很少有人会对Excel要直接CURD的吧,但是我就恰恰碰上了。
在这里,我不打算把相关代码贴出来,只是总结一下他的思想和部分使用心得,也许有的朋友看到了会有些帮助。
代码上,会用JDBC的人就可以使用它,下载的包里有一个很小的TestCase类,看一下就知道了。
思想小结:
1,默认的Datasource定位在他的包的bin目录下,启动时扫描预读bin目录所有的Excel文件。
2,自启动HSQL/MySQL,用于和Excel交换数据(这个一直没有搞懂)。
3,Driver名称com.nilostep.xlsql.jdbc.xlDriver。我们可以用Spring给他装一个连接池,以加快速度。
4,SQL语句的表名,excel文件名.Sheet?,如“myexcel.Sheet1"。
5,Select,查询结果就是ResultSet,大家很熟悉的吧。
6,Insert,Update,Delete方面,这家伙比较笨可能,把原文件重写了一遍,所以别指望他帮你保留格式啊。而且Datasource必须关闭才能Commit到文件,否则只是在内存中进行,这一点提高了速度,不过它做的比较差的是内存中的操作历史没有log下来,这样,万一断电或者死机什么的,操作就白费了。然而Datasource关闭的最直接后果就是下次操作时需要重新连接(即使给他提供了Pool),这样的话又会扫描预读bin目录下的所有excel文件,很糟糕的是这需要不少时间,每个文件大概2s。(在寻找更好的解决方案)
7,最后,还有个头痛的事情就是,每次重新启动必须要删除上次生成的3个文件,一般会在Tomcat的bin目录下xlsql*.*,不然会有错,启动不了xlSQL(这个也在想办法)。
这里,说明一下,完全可以用POI解决它,但是如果大家不想重新发明轮子的话,可以考虑一下xlSQL,在使用这个家伙之前,请务必确认他的优势和弊端,权衡一下再作打算。
由于这个方面的文档比较匮乏,所有的使用过程是在摸索中进行的,在中文的网页上真的很难找到,英文的也不多,基本上没有。有什么建议或者问题请直接留言。
相关网站:
www.nilostep.com (不知道这是否能叫他们官方网站)
https://xlsql.dev.java.net/ (基本上这是网上最全的文档了,也没有超过一页)
http://jimcaprioli.blogspot.com/ (xlSQL作者的blog,这里能找到一点点相关信息)
http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=649577(对我有些帮助的一个帖子,HP IT论坛)
Lastly, 3KS for your time.
当项目处于Phase1时,由于对Apache组织的POI比较熟练,本人写了个专门基于它的一个Component,以实现对Excel文件的操作。同时,又在服务器端为每张Excel创建了一个Table以映射,目的很简单,提高了速度和安全性能,当然这有着很大的弊端。
后来,果然项目升级了,虽然可以为每个新的Excel动态Create Table,但是如果面对成千上万的Excel文件,是否要考虑考虑?我从Outlook的mail历史中,找到之前DM Frank发给我的一封信,xlSQL的简单用法,Research开始了。。。
xlSQL最新版本是Y7,从网上搜索来看,使用的人不多,少的可怜的文档,甚至他的官方网站也关了(后来还是开了),也许真的很少有人会对Excel要直接CURD的吧,但是我就恰恰碰上了。
在这里,我不打算把相关代码贴出来,只是总结一下他的思想和部分使用心得,也许有的朋友看到了会有些帮助。
代码上,会用JDBC的人就可以使用它,下载的包里有一个很小的TestCase类,看一下就知道了。
思想小结:
1,默认的Datasource定位在他的包的bin目录下,启动时扫描预读bin目录所有的Excel文件。
2,自启动HSQL/MySQL,用于和Excel交换数据(这个一直没有搞懂)。
3,Driver名称com.nilostep.xlsql.jdbc.xlDriver。我们可以用Spring给他装一个连接池,以加快速度。
4,SQL语句的表名,excel文件名.Sheet?,如“myexcel.Sheet1"。
5,Select,查询结果就是ResultSet,大家很熟悉的吧。
6,Insert,Update,Delete方面,这家伙比较笨可能,把原文件重写了一遍,所以别指望他帮你保留格式啊。而且Datasource必须关闭才能Commit到文件,否则只是在内存中进行,这一点提高了速度,不过它做的比较差的是内存中的操作历史没有log下来,这样,万一断电或者死机什么的,操作就白费了。然而Datasource关闭的最直接后果就是下次操作时需要重新连接(即使给他提供了Pool),这样的话又会扫描预读bin目录下的所有excel文件,很糟糕的是这需要不少时间,每个文件大概2s。(在寻找更好的解决方案)
7,最后,还有个头痛的事情就是,每次重新启动必须要删除上次生成的3个文件,一般会在Tomcat的bin目录下xlsql*.*,不然会有错,启动不了xlSQL(这个也在想办法)。
这里,说明一下,完全可以用POI解决它,但是如果大家不想重新发明轮子的话,可以考虑一下xlSQL,在使用这个家伙之前,请务必确认他的优势和弊端,权衡一下再作打算。
由于这个方面的文档比较匮乏,所有的使用过程是在摸索中进行的,在中文的网页上真的很难找到,英文的也不多,基本上没有。有什么建议或者问题请直接留言。
相关网站:
www.nilostep.com (不知道这是否能叫他们官方网站)
https://xlsql.dev.java.net/ (基本上这是网上最全的文档了,也没有超过一页)
http://jimcaprioli.blogspot.com/ (xlSQL作者的blog,这里能找到一点点相关信息)
http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=649577(对我有些帮助的一个帖子,HP IT论坛)
Lastly, 3KS for your time.
相关文章推荐
- 博为峰Java技术题-JavaSE 之关键字
- 读取、回收和重用:使用 Excel、XML 和 Java 技术轻松搞定报告,第 2 部分
- java的poi技术写Excel的Sheet
- java.sql.SQLException: ORA-02291: 违反完整约束条件 (BOOK.FK_USERNAME) - 未找到父项关键字
- oracle11g java导出excel报错oracle.sql.CLOB@xxxx问题
- java的poi技术读取Excel[2003-2007,2010]
- java操作word/excel/pdf等文件技术方案
- java实现爬虫技术,读取txt,word,excel,ppt,pdf,html等格式的文件
- java的jxl技术导入Excel
- java的poi技术读取和导入Excel实例
- java 通过poi 读取Excel 写入sqlser mysql
- .Net/C#/VB/T-SQL/Java 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- Java的poi技术读取和导入Excel
- Java的poi技术读取和导入Excel
- java的poi技术读取Excel数据到MySQL
- java的poi技术读取Excel
- 【JAVA秒会技术之玩转SQL】MySQL优化技术(一)
- Java_final关键字,不可变类,缓存不可变类实例(缓存池技术)
- java的jxl技术导入Excel
- java poi技术操作excel之写Excel(向Excel中写入值)