锁定老帖子 主题:Excel导入导出组件
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | |||||||||||||||||||||
发表时间:2007-11-30
当前的程序开发中(Struts + Spring + Hibernate/Ibatis),有很多需要用Excel文件进行数据的导入,导出操作。 可以,产生一个xml配制文件,在配制文件中,把excel中的每一列和javabean中的属性对应些来,就可以解决啦。 1、Excel组件可以把现有的格式化的Excel文件每笔记录填充指定的JavaBean,封装成一个List返回给用户。用户可以利用封装之后的javabean list 进行相关操作(交给hibernate,ibatis等处理)。 实例说明:
<!---->
实例调用: Map map = new HashMap(); System.out.println("--" + ToStringBuilder.reflectionToString(test.getConfigTitle().entrySet().toArray())); 输出结果: init Class = com.javayjm.test.model.DeptModel
lib 清单 commons-lang-2.0.jar commons-logging.jar dom4j-1.6.jar jxl.jar log4j-1.2.8.jar spring.jar
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-01
有个问题不明白:column :指excel没有表头名称时,可以对应所排的列号
是啥意思?
Excel文件:
部门名称 部门编号 发文简称 排序 操作结果 (没有这一行?)
总部 A001 永久 2 00000
一分部 A002 长期 3 111111
分部 A003 长期 5
|
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-01
有个问题不明白:
column :指excel没有表头名称时,可以对应所排的列号 是啥意思? Excel文件: 部门名称 部门编号 发文简称 排序 操作结果 (没有这一行?) 总部 A001 永久 2 00000 分部 A002 长期 3 111111 分部 A003 长期 5 |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-01
godson_2003 写道 有个问题不明白:
column:这个版本还没有支持。指属性值取Excel第几列的值。有两各方式取值:一是按配制文件中ExcelTitleName对应Excel中的列标题取值,二是按column对应的Excel中第几列取值。
column :指excel没有表头名称时,可以对应所排的列号 是啥意思? Excel文件: 部门名称 部门编号 发文简称 排序 操作结果 (没有这一行?) 总部 A001 永久 2 00000 分部 A002 长期 3 111111 分部 A003 长期 5 操作结果:可以去掉,是新功能测试的数据。那是用来做错误信息回写的。(在web应用中,正确的数据写入到数据库中,当有验证未通过的记录时,把错误原因写入到Excel中,再回传给用户。这些是导入不成功的数据。) map 中传入的是当一列数据有对应的代码表,需要替换。如:长期(C),永久(Y) 长期是显示值,Y是数据库中保存的值 <property name="sendFileName" column="3" excelTitleName="发文简称" dataType="String" maxLength="15" fixity="" codeTableName="bgqx" default="C"/> map.put("deptNo", "1"); map.put("bgqx永久", "Y"); |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-01
看一下:com\javayjm\excel\config\ConfigConstant.java
package com.javayjm.excel.config; public class ConfigConstant { /* * model 的查找编号 id */ public static final String MODEL_ID = "id"; /* * 从Excel 到 Model 转换的目标 javabean class */ public static final String MODEL_CLASS="class"; /* * excel 列中对应到javabean中的 javabean属性名称 */ public static final String PROPERTY_NAME = "name"; /* * excel中的标标题中的列数 ( 取值的时候可以用javabean属性和对应的列数取值) */ public static final String PROPERTY_CLOUMN="cloumn"; /* * excel 列中对应到javabean中的 excel列标题名称 (取值的时候,可以用 javabean属性和Excel中的标题对应取值) */ public static final String PROPERTY_EXCEL_TITLE_NAME = "excelTitleName"; /* * excel中的列数据要被转换的数据类型 */ public static final String PROPERTY_DATA_TYPE = "dataType"; /* * excel中的数据最大长度 */ public static final String PROPERTY_MAX_LENGTH="maxLength"; /* * 在excel中没有列数据,需要系统对javabean属性中的某一个值设置一个动态传入的值(指所有JavaBean的这个属性值,都是统一传入的固定值).设置些属性,必须设置默认值 * * 他的值设置为 fixity = "yes" ,默认为 no. */ public static final String PROPERTY_FIXITY="fixity"; /* * 在导入excel时,有些值在存入系统时,使用的值需要转换 * 如:一个保管期限的下拉列表中有{永久(Y),长期(C),短期(D)} * 系统中存入的只能是 Y,C,D之类的值,导入Excel的值却是永久,长期,短期这类的值,需要转换. * 转换方式:取到Excel中的具体值,加上保管期限前辍,从传入的Map中取值.如 取值长期 C = Map.get("bgqx长期"); * */ public static final String PROPERTY_CODE_TABLE_NAME="codeTableName"; /* * 如果值为空,设置的默认值 */ public static final String PROPERTY_DEFAULT="default"; } |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-05
这个组件的设计思想还是很清楚的。
XML配置数据库字段和EXCEL各列的映射关系, ExcelToModel通过JXL解析文件,根据配置每行生成JAVABEAN 遍历得到list 谢谢楼主,晚上回去试试 |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-05
pandaprince 写道 XML配置数据库字段和EXCEL各列的映射关系 XML配置javaBean属性和EXCEL各列的映射关系,别走弯路。 一些新功能正在开发中。 |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-06
apache 的 pol 好像也可以实现类似的功能。
|
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-06
不好意思,是 POI 不是POL
|
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||
发表时间:2007-12-12
问题是有些EXCEL文档 的格子是 不规律的
比如遇到单元格是合并的 那如何判断? |
||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||