精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-30
最后修改:2008-12-11
读取和写入使用的是jxl组件
昨天项目中遇到了处理Excel的功能.记得在以前写过的读取Excel都是利用坐标之类的来进行的.昨天突发奇想:可不可以把Excel当做数据库的一张表来处理?!经过考虑之后觉得可行.大体实现思路如下: 1.首先建立映射关系文件:excelmapping.xml
1.1 class:定义一个Excel的配置信息. 1.2 name:定义存储Excel每一行的类.类似于Hibernate的pojo. 1.3 excelPop:Excel文件中的列名. 1.4 classPop:映射类中的属性 1. 读取Excel时首先读取excelmapping.xml配置文件.取出映身关系和映射类.读取Excel中的所有行和列,循环每一行的每一列,并取出每列的列名.在映身关系中查找与之对应的类属性.读出此列中的数据写入类属性中.读完整行之后将类写入集合中.循环所有行之后就产生了与Excel相对应的类的集合. 2. 写入Excel时首先读取excelmapping.xml配置文件.取出映身关系和映射类.将映射文件中配置的Excel列名写入第一行.获得写入的Excel列名.循环整个将要写入Excel的集合.取出集合中的每一个类.根据映射文件描述的Excel列名与类中属性关系.找出Excel中列名对应的类属性.拿出类中此属性的数据并写入Excel中对应的列名下
此方法只能适用于简单的Excel读写. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-31
刚好昨天有个项目也是用到excel.自动生成excel,我是poi做的。你们呢?你小子想法挺新颖得,这个应该和数据库有区别吧。有合并单元格,取单元格属性怎么办呢?
|
|
返回顶楼 | |
发表时间:2007-08-31
这样做的确只能用于简单的Excel操作.
poi和jxl同样都是操作Excel的组件.我只是做了一点封装. 对于复杂的操作肯定要来定义Excel的格式了. 是长青? |
|
返回顶楼 | |
发表时间:2007-08-31
封装的方法只试用于下面两种经常出现的情况
1.批量新增,将Excel上传到服务器.进行读取.取出集合+入数据库 2.将一个查询后的集合写入Excel 对于复杂或其它特殊格式的.大家有什么好的想法说出来看看 |
|
返回顶楼 | |
发表时间:2007-08-31
我们开发中用得也是jxl
我觉得你的突发奇想挺好,但好像不怎么适用 既然产生映射,那映射文件肯定固定不意修改。Excel在项目中使用起来,读取列和存入字段都是未知的。所以不能作为系统的Util 而本身持久化对象就是存储在内存之外,我没有试你的想法,不知道会不会增加事务的负担,感觉还是不如用流 |
|
返回顶楼 | |
发表时间:2007-08-31
我把代码传上来.其实这样做的目的就是简化模版类的Excel读和写.而不需要写:
Label label = new Label(col, row, "test"); ws.addCell(label); 这样的代码了 |
|
返回顶楼 | |
发表时间:2007-08-31
xml 代码
说来也巧,也是刚刚实现了这个效果,客户端上传excel,通过读取excel配置xml文件,转化成po。原来大家都做了类似的东西哦。 兄弟的xml文件是如何写的? |
|
返回顶楼 | |
发表时间:2007-09-01
思路很不错,但是楼主也说了,把excel当成数据表来使用,这也就是意味着我们的excel只是一个数据承载体,而对格式等都要忽略了。
如果遇到这种excel,我一般把它弄到数据库一张临时表,处理完了就删掉,呵呵 |
|
返回顶楼 | |
发表时间:2007-09-01
关于定义数据类型也考虑过.甚至想过可以定义对象类型,可是Excel中给出的数据并不是可以直接插入或者更新进数据库的.所以索性不考虑数据类型.全部以String类型进行处理,得到数据后在进行业务的处理
|
|
返回顶楼 | |
发表时间:2007-09-01
有点意思.
不过搞复杂了,楼主下载处理excel的jdbc驱动程序,就可以象访问数据库那样访问excel |
|
返回顶楼 | |