- 浏览: 11314 次
最近访客 更多访客>>
最新评论
-
suncjh:
非常不错,很有创意!!
仿hibernate映射机制对Excel进行读写 -
ajworld:
感谢楼主,对我帮助很大,因为我们的产品很多模块客户都要求把历史 ...
仿hibernate映射机制对Excel进行读写 -
aoaoao:
我来支持一下,这种思路挺好,体现2/8精神,再深入投入产出比就 ...
仿hibernate映射机制对Excel进行读写 -
wangweij:
<p>不知道你们在说什么呢& ...
仿hibernate映射机制对Excel进行读写 -
sun128837:
同意楼上
你丫的这么啃,我感觉就是在找麻烦
不渗入业务,又有多 ...
仿hibernate映射机制对Excel进行读写
读取和写入使用的是jxl组件
昨天项目中遇到了处理Excel的功能.记得在以前写过的读取Excel都是利用坐标之类的来进行的.昨天突发奇想:可不可以把Excel当做数据库的一张表来处理?!经过考虑之后觉得可行.大体实现思路如下:
1.首先建立映射关系文件:excelmapping.xml
- <!---->xml version="1.0" encoding="UTF-8"?>
- <excel-mapping>
- <class name="com.bjce.uum.excel.domain.ExcelBean">
- <pop excelPop="姓名" classPop="userName">pop>
- <pop excelPop="性别" classPop="sexName">pop>
- <pop excelPop="出生日期" classPop="birthday">pop>
- <pop excelPop="单位编码" classPop="unitCode">pop>
- <pop excelPop="固定电话" classPop="phone">pop>
- <pop excelPop="移动手机" classPop="mobilePhone">pop>
- class>
- excel-mapping>
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读写.
评论
34 楼
suncjh
2008-03-28
非常不错,很有创意!!
33 楼
ajworld
2007-09-20
感谢楼主,对我帮助很大,因为我们的产品很多模块客户都要求把历史数据导入,我们许多模块都做个excel导入,程序量很大,且重复代码太多,其实还可以完善一下,做一个标准的excel导入组件,主要是在持久化这一块的判断
32 楼
aoaoao
2007-09-18
我来支持一下,这种思路挺好,体现2/8精神,再深入投入产出比就不高了。
31 楼
wangweij
2007-09-17
<p>不知道你们在说什么呢<img src='/javascripts/fckeditor/editor/images/smiley/msn/sad_smile.gif' alt=''/>.看看刚一开始.已经说了用于简单的处理.不用的话也一样.可以自已去程序中定义显示位置</p>
30 楼
sun128837
2007-09-17
同意楼上
你丫的这么啃,我感觉就是在找麻烦
不渗入业务,又有多平台使用那就放入工具箱,简单应用不值得考虑
你丫的这么啃,我感觉就是在找麻烦
不渗入业务,又有多平台使用那就放入工具箱,简单应用不值得考虑
29 楼
tomgreenintel
2007-09-17
没必要把一些简单的事情复杂化。除非有业务上的需求。最简单最好
28 楼
wangweij
2007-09-17
<p>动态 </p>
<p>读的时候可能很因难.但写出到Excel应该没有什么难度吧.</p>
<p>现在这东西是个很简单的家伙.要是真有那么强大:) $$$$$$$$$$$$ 嘿嘿!</p>
<p> </p>
<p>读的时候可能很因难.但写出到Excel应该没有什么难度吧.</p>
<p>现在这东西是个很简单的家伙.要是真有那么强大:) $$$$$$$$$$$$ 嘿嘿!</p>
<p> </p>
27 楼
cayenne
2007-09-16
如果列是动态的话。。。
26 楼
fuliang
2007-09-14
以前在公司实习也做一个使用Java反射来把把Domain导入Excel,以及读取Excel装配成Domain的一个模块.
25 楼
insky
2007-09-14
tomgreenintel 写道
感觉不可取。如果execl有图片呢?怎么去对应呢?
或者有些公式呢?
或者有些公式呢?
呵...有图片不能用这种方式处理的,图片可能占到多个表格,需要单独处理的。这种只考虑文字形式,企业处理的话,也多是面临对字符,文字,数字处理吧。
24 楼
wangweij
2007-09-14
<p>正在研究复杂EXCEL的定制.有什么好的见意都来说说<img src='/javascripts/fckeditor/editor/images/smiley/msn/wink_smile.gif' alt=''/></p>
23 楼
tomgreenintel
2007-09-10
感觉不可取。如果execl有图片呢?怎么去对应呢?
或者有些公式呢?
或者有些公式呢?
22 楼
insky
2007-09-07
<br/>
<strong>wangweij 写道:</strong><br/>
<div class='quote_div'>
<p>因为user中sex是一个性别对象,从Excel中得到的只是sex.name....需要转为sex对象后才可以直接用.否则得到的集合还是需要进行转换的.</p>
<p>可以在读取Excel时进行处理.但有些时候处理这种问题通常有一个处理规则.也许这种规则很复杂.</p>
<p>》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》</p>
<p>上面的置配文件中.配了sex属性对应的对象.表名,主键.这样的话可以根据XXX_SEX和主键来查出对应类在放入对象.</p>
<p>如果Excel中性别这一列中数据为sex主键的话:)</p>
</div>
<p><br/>
想做到通用处理规则肯定会相当复杂,xml中涉及的类型都需要作出判断,这里封装的好才可以完整的把数据处理成pojo返回给业务端,虽然我还没能理解您这里sex为什么单独抽取成一个对象,但是即使是一个对象,您照样可以处理后把这个sex对象塞给user啊,这里应该没有负责或者说难点吧?或者我还没有理解您的意思</p>
<p>btw:加您qq貌似您经常不在线?<br/>
<br/>
<br/>
</p>
<strong>wangweij 写道:</strong><br/>
<div class='quote_div'>
<p>因为user中sex是一个性别对象,从Excel中得到的只是sex.name....需要转为sex对象后才可以直接用.否则得到的集合还是需要进行转换的.</p>
<p>可以在读取Excel时进行处理.但有些时候处理这种问题通常有一个处理规则.也许这种规则很复杂.</p>
<p>》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》</p>
<p>上面的置配文件中.配了sex属性对应的对象.表名,主键.这样的话可以根据XXX_SEX和主键来查出对应类在放入对象.</p>
<p>如果Excel中性别这一列中数据为sex主键的话:)</p>
</div>
<p><br/>
想做到通用处理规则肯定会相当复杂,xml中涉及的类型都需要作出判断,这里封装的好才可以完整的把数据处理成pojo返回给业务端,虽然我还没能理解您这里sex为什么单独抽取成一个对象,但是即使是一个对象,您照样可以处理后把这个sex对象塞给user啊,这里应该没有负责或者说难点吧?或者我还没有理解您的意思</p>
<p>btw:加您qq貌似您经常不在线?<br/>
<br/>
<br/>
</p>
21 楼
wangweij
2007-09-07
<p>因为user中sex是一个性别对象,从Excel中得到的只是sex.name....需要转为sex对象后才可以直接用.否则得到的集合还是需要进行转换的.</p>
<p>可以在读取Excel时进行处理.但有些时候处理这种问题通常有一个处理规则.也许这种规则很复杂.</p>
<p>》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》</p>
<p>上面的置配文件中.配了sex属性对应的对象.表名,主键.这样的话可以根据XXX_SEX和主键来查出对应类在放入对象.</p>
<p>如果Excel中性别这一列中数据为sex主键的话:)</p>
<p>可以在读取Excel时进行处理.但有些时候处理这种问题通常有一个处理规则.也许这种规则很复杂.</p>
<p>》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》</p>
<p>上面的置配文件中.配了sex属性对应的对象.表名,主键.这样的话可以根据XXX_SEX和主键来查出对应类在放入对象.</p>
<p>如果Excel中性别这一列中数据为sex主键的话:)</p>
20 楼
insky
2007-09-07
<div class='code_title'>xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-xml'>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span></span></li>
<li class=''><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"性别"</span><span> </span></li>
<li class='alt'><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"sex"</span><span> </span></li>
<li class=''><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.Sex"</span><span> </span></li>
<li class='alt'><span> </span><span class='attribute'>tableId</span><span>=</span><span class='attribute-value'>"sex_id"</span><span> </span></li>
<li class=''><span> </span><span class='attribute'>table</span><span>=</span><span class='attribute-value'>"XXX_SEX"</span><span class='tag'>></span><span> </span></li>
<li class='alt'><span> pop</span><span class='tag'>></span><span> </span></li>
</ol>
</div>
<p>这里的性别您自己又定义了一个Sex类?性别不应该是user的一个属性吗?为什么又单独定义一个类?如果是user的属性的话,读取出来的是string类型这里加一个判断,转换下塞给user类不就ok了?</p>
<p>楼上的c#代码??没太看明白,但好像您没有看明白我们讨论的问题。</p>
<p>=============================</p>
<p>大家觉得通用性的通过xml配置文件处理Excel文件有实际应用价值吗?会不会太简单而没研究价值?查了好多paper,国内似乎真没这个方面的,是太过简单还是不值得发?</p>
<p>Tks all</p>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-xml'>
<li class='alt'><span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span></span></li>
<li class=''><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"性别"</span><span> </span></li>
<li class='alt'><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"sex"</span><span> </span></li>
<li class=''><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.Sex"</span><span> </span></li>
<li class='alt'><span> </span><span class='attribute'>tableId</span><span>=</span><span class='attribute-value'>"sex_id"</span><span> </span></li>
<li class=''><span> </span><span class='attribute'>table</span><span>=</span><span class='attribute-value'>"XXX_SEX"</span><span class='tag'>></span><span> </span></li>
<li class='alt'><span> pop</span><span class='tag'>></span><span> </span></li>
</ol>
</div>
<p>这里的性别您自己又定义了一个Sex类?性别不应该是user的一个属性吗?为什么又单独定义一个类?如果是user的属性的话,读取出来的是string类型这里加一个判断,转换下塞给user类不就ok了?</p>
<p>楼上的c#代码??没太看明白,但好像您没有看明白我们讨论的问题。</p>
<p>=============================</p>
<p>大家觉得通用性的通过xml配置文件处理Excel文件有实际应用价值吗?会不会太简单而没研究价值?查了好多paper,国内似乎真没这个方面的,是太过简单还是不值得发?</p>
<p>Tks all</p>
19 楼
hcqgx
2007-09-07
用XML来做模板 做一个通用类 来导出EXCEL 我用C#做了一个
<?xml version="1.0" encoding="utf-8" ?>
<report>
<page> <!-- 页面设置 -->
<add key="cols" value="1" />
<add key="1" tmn="1.2" bmn="1.2" lmn="1" rmn="1" hmn="0" lhr="" chr="" rhr="" fmn="0" lfr="" cfr="" rfr="" prno="0" bds="0" prs="33" pcs="7" />
</page>
<titile> <!-- 标题 -->
<add key="cols" value="1" />
<add key="1" txt="旬 总 表" font="宋体" size="20" bold="1" rows="1" col1="1" col2="7" width="0" height="90" bds="0" align="2" valign="2" />
</titile>
<brow> <!-- 表眉 -->
<add key="cols" value="2" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="年 份:" font="黑体" size="11" bold="0" rows="1" col1="1" col2="6" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="yf" fadd="0" rowadd="0" />
<add key="2" txt="" font="宋体" size="11" bold="0" rows="1" col1="7" col2="7" width="0" height="20" align="2" valign="3" tbr="0" bbr="0" lbr="0" rbr="0" field="#pageno" fadd="0" rowadd="0" />
</brow>
<head> <!-- 表头 --> <!-- rows 表示行数 -->
<add key="cols" value="7" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="票据类型" font="黑体" size="11" bold="0" rows="1" col1="1" col2="1" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="2" txt="期初结存份数" font="黑体" size="11" bold="0" rows="1" col1="2" col2="2" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="3" txt="本旬领入份数" font="黑体" size="11" bold="0" rows="1" col1="3" col2="3" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="4" txt="本旬核销份数" font="黑体" size="11" bold="0" rows="1" col1="4" col2="4" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="5" txt="本旬核销废票" font="黑体" size="11" bold="0" rows="1" col1="5" col2="5" width="0" height="20" align="2" valign="2" tbr="1" bbr="0" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="6" txt="本旬核销金额" font="黑体" size="11" bold="0" rows="1" col1="6" col2="6" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="7" txt="期末结存份数" font="黑体" size="11" bold="0" rows="1" col1="7" col2="7" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
</head>
<data> <!-- 数据区 -->
<add key="cols" value="7" font="宋体" size="11" bold="0" tbr="1" bbr="1" lbr="1" rbr="1" border="1" height="20"/>
<add key="1" txt="" font="宋体" size="11" bold="0" rows="1" col1="1" col2="1" width="13" height="20" align="2" valign="1" tbr="1" bbr="1" lbr="1" rbr="1" field="Shty" fadd="0" rowadd="0" />
<add key="2" txt="" font="宋体" size="11" bold="0" rows="1" col1="2" col2="2" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="GetBe" fadd="0" rowadd="0" />
<add key="3" txt="" font="宋体" size="11" bold="0" rows="1" col1="3" col2="3" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="GetEn" fadd="0" rowadd="0" />
<add key="4" txt="" font="宋体" size="11" bold="0" rows="1" col1="4" col2="4" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="UseBe" fadd="0" rowadd="0" />
<add key="5" txt="" font="宋体" size="11" bold="0" rows="1" col1="5" col2="5" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="UseEn" fadd="0" rowadd="0" />
<add key="6" txt="" font="宋体" size="11" bold="0" rows="1" col1="6" col2="6" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="TotBe" fadd="0" rowadd="0" />
<add key="7" txt="" font="宋体" size="11" bold="0" rows="1" col1="7" col2="7" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="TotEn" fadd="0" rowadd="0" />
</data>
<foot> <!-- 表脚 -->
<add key="cols" value="3" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="负责人:" font="黑体" size="11" bold="0" rows="1" col1="1" col2="2" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="fzr" fadd="0" rowadd="0" />
<add key="2" txt="审 核:" font="黑体" size="11" bold="0" rows="1" col1="3" col2="4" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="shr" fadd="0" rowadd="0" />
<add key="3" txt="制表人:" font="黑体" size="11" bold="0" rows="1" col1="5" col2="7" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="zbr" fadd="0" rowadd="0" />
</foot>
</report>
<?xml version="1.0" encoding="utf-8" ?>
<report>
<page> <!-- 页面设置 -->
<add key="cols" value="1" />
<add key="1" tmn="1.2" bmn="1.2" lmn="1" rmn="1" hmn="0" lhr="" chr="" rhr="" fmn="0" lfr="" cfr="" rfr="" prno="0" bds="0" prs="33" pcs="7" />
</page>
<titile> <!-- 标题 -->
<add key="cols" value="1" />
<add key="1" txt="旬 总 表" font="宋体" size="20" bold="1" rows="1" col1="1" col2="7" width="0" height="90" bds="0" align="2" valign="2" />
</titile>
<brow> <!-- 表眉 -->
<add key="cols" value="2" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="年 份:" font="黑体" size="11" bold="0" rows="1" col1="1" col2="6" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="yf" fadd="0" rowadd="0" />
<add key="2" txt="" font="宋体" size="11" bold="0" rows="1" col1="7" col2="7" width="0" height="20" align="2" valign="3" tbr="0" bbr="0" lbr="0" rbr="0" field="#pageno" fadd="0" rowadd="0" />
</brow>
<head> <!-- 表头 --> <!-- rows 表示行数 -->
<add key="cols" value="7" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="票据类型" font="黑体" size="11" bold="0" rows="1" col1="1" col2="1" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="2" txt="期初结存份数" font="黑体" size="11" bold="0" rows="1" col1="2" col2="2" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="3" txt="本旬领入份数" font="黑体" size="11" bold="0" rows="1" col1="3" col2="3" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="4" txt="本旬核销份数" font="黑体" size="11" bold="0" rows="1" col1="4" col2="4" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="5" txt="本旬核销废票" font="黑体" size="11" bold="0" rows="1" col1="5" col2="5" width="0" height="20" align="2" valign="2" tbr="1" bbr="0" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="6" txt="本旬核销金额" font="黑体" size="11" bold="0" rows="1" col1="6" col2="6" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
<add key="7" txt="期末结存份数" font="黑体" size="11" bold="0" rows="1" col1="7" col2="7" width="0" height="20" align="2" valign="2" tbr="1" bbr="1" lbr="1" rbr="1" field="" fadd="0" rowadd="0" />
</head>
<data> <!-- 数据区 -->
<add key="cols" value="7" font="宋体" size="11" bold="0" tbr="1" bbr="1" lbr="1" rbr="1" border="1" height="20"/>
<add key="1" txt="" font="宋体" size="11" bold="0" rows="1" col1="1" col2="1" width="13" height="20" align="2" valign="1" tbr="1" bbr="1" lbr="1" rbr="1" field="Shty" fadd="0" rowadd="0" />
<add key="2" txt="" font="宋体" size="11" bold="0" rows="1" col1="2" col2="2" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="GetBe" fadd="0" rowadd="0" />
<add key="3" txt="" font="宋体" size="11" bold="0" rows="1" col1="3" col2="3" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="GetEn" fadd="0" rowadd="0" />
<add key="4" txt="" font="宋体" size="11" bold="0" rows="1" col1="4" col2="4" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="UseBe" fadd="0" rowadd="0" />
<add key="5" txt="" font="宋体" size="11" bold="0" rows="1" col1="5" col2="5" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="UseEn" fadd="0" rowadd="0" />
<add key="6" txt="" font="宋体" size="11" bold="0" rows="1" col1="6" col2="6" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="TotBe" fadd="0" rowadd="0" />
<add key="7" txt="" font="宋体" size="11" bold="0" rows="1" col1="7" col2="7" width="12" height="20" align="2" valign="3" tbr="1" bbr="1" lbr="1" rbr="1" field="TotEn" fadd="0" rowadd="0" />
</data>
<foot> <!-- 表脚 -->
<add key="cols" value="3" font="黑体" size="11" bold="0" rows="1" />
<add key="1" txt="负责人:" font="黑体" size="11" bold="0" rows="1" col1="1" col2="2" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="fzr" fadd="0" rowadd="0" />
<add key="2" txt="审 核:" font="黑体" size="11" bold="0" rows="1" col1="3" col2="4" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="shr" fadd="0" rowadd="0" />
<add key="3" txt="制表人:" font="黑体" size="11" bold="0" rows="1" col1="5" col2="7" width="0" height="20" align="2" valign="1" tbr="0" bbr="0" lbr="0" rbr="0" field="zbr" fadd="0" rowadd="0" />
</foot>
</report>
18 楼
wangweij
2007-09-07
<p> </p>
<p> </p>
<p> <img src='http://www.iteye.com/topics/download/762dcaa2-0531-4e95-acc8-9e6e7fe08c4b' alt=''/><a href='http://www.iteye.com/upload/attachment/pic/8345/c62c4f17-eace-4f97-a404-55aca3ba1f1f-'/></p>
<p>性别这一列是user的一个对象.像这种的就不可能封入到PO中直接用了.但是如果此列中的数据是性别的ID.就应该能解决了.</p>
<p>在配置文件中置配</p>
<p> </p>
<div class='code_title'>xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-xml'>
<li class='alt'><span><span class='tag'><!----><span class='tag-name'>xml</span><span> </span><span class='attribute'>version</span><span>=</span><span class='attribute-value'>"1.0"</span><span> </span><span class='attribute'>encoding</span><span>=</span><span class='attribute-value'>"UTF-8"</span><span class='tag'>?></span><span> </span></span> </span></li>
<li class=''><span/><span class='tag'><</span><span class='tag-name'>excel-mapping</span><span class='tag'>></span><span> </span> </li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>class</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.ExcelBean"</span><span class='tag'>></span><span> </span> </li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"姓名"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"userName"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"string"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"性别"</span><span> </span> </li>
<li class='alt'><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"sex"</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.Sex"</span><span> </span> </li>
<li class='alt'><span> </span><span class='attribute'>tableId</span><span>=</span><span class='attribute-value'>"sex_id"</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>table</span><span>=</span><span class='attribute-value'>"XXX_SEX"</span><span class='tag'>></span><span> </span> </li>
<li class='alt'><span> </span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"出生日期"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"birthday"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"date"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"单位编码"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"unitCode"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"integer"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"固定电话"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"phone"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"string"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"移动手机"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"mobilePhone"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"integer"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><span class='tag-name'>class</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span/><span class='tag'><span class='tag-name'>excel-mapping</span><span class='tag'>></span><span> </span> </span></li>
</ol>
</div>
<p>可惜.用户是不可能也不想知道性别的ID的.所以此方法基本不可行</p>
<p> </p>
<p> <img src='http://www.iteye.com/topics/download/762dcaa2-0531-4e95-acc8-9e6e7fe08c4b' alt=''/><a href='http://www.iteye.com/upload/attachment/pic/8345/c62c4f17-eace-4f97-a404-55aca3ba1f1f-'/></p>
<p>性别这一列是user的一个对象.像这种的就不可能封入到PO中直接用了.但是如果此列中的数据是性别的ID.就应该能解决了.</p>
<p>在配置文件中置配</p>
<p> </p>
<div class='code_title'>xml 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-xml'>
<li class='alt'><span><span class='tag'><!----><span class='tag-name'>xml</span><span> </span><span class='attribute'>version</span><span>=</span><span class='attribute-value'>"1.0"</span><span> </span><span class='attribute'>encoding</span><span>=</span><span class='attribute-value'>"UTF-8"</span><span class='tag'>?></span><span> </span></span> </span></li>
<li class=''><span/><span class='tag'><</span><span class='tag-name'>excel-mapping</span><span class='tag'>></span><span> </span> </li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>class</span><span> </span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.ExcelBean"</span><span class='tag'>></span><span> </span> </li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"姓名"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"userName"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"string"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"性别"</span><span> </span> </li>
<li class='alt'><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"sex"</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"com.bjce.uum.excel.domain.Sex"</span><span> </span> </li>
<li class='alt'><span> </span><span class='attribute'>tableId</span><span>=</span><span class='attribute-value'>"sex_id"</span><span> </span> </li>
<li class=''><span> </span><span class='attribute'>table</span><span>=</span><span class='attribute-value'>"XXX_SEX"</span><span class='tag'>></span><span> </span> </li>
<li class='alt'><span> </span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"出生日期"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"birthday"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"date"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"单位编码"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"unitCode"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"integer"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"固定电话"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"phone"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"string"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span> </span><span class='tag'><</span><span class='tag-name'>pop</span><span> </span><span class='attribute'>excelPop</span><span>=</span><span class='attribute-value'>"移动手机"</span><span> </span><span class='attribute'>classPop</span><span>=</span><span class='attribute-value'>"mobilePhone"</span><span> </span><span class='attribute'>type</span><span>=</span><span class='attribute-value'>"integer"</span><span class='tag'>></span><span class='tag'><span class='tag-name'>pop</span><span class='tag'>></span><span> </span> </span></li>
<li class=''><span> </span><span class='tag'><span class='tag-name'>class</span><span class='tag'>></span><span> </span> </span></li>
<li class='alt'><span/><span class='tag'><span class='tag-name'>excel-mapping</span><span class='tag'>></span><span> </span> </span></li>
</ol>
</div>
<p>可惜.用户是不可能也不想知道性别的ID的.所以此方法基本不可行</p>
17 楼
coder1982
2007-09-07
有没有处理复杂的EXCEL的解决方法呢?
我的工作中经常要解析EXCEL文档,分大格和小格
我的工作中经常要解析EXCEL文档,分大格和小格
16 楼
insky
2007-09-06
发现这个题目的资料不是很多,多是excel读写或者转换成xml的内容,问下各位大牛,google这个项目相关的英文资料该搜什么关键词?
15 楼
insky
2007-09-06
crossgrass 写道
我在应用中碰到的情况一般通过excel读入的都是需要持久化的数据。而excel中数据一般只是po的一部分。而且涉及到导入到多张表的时候通过配置文件就比较麻烦了。
这里不太明白您说的麻烦是什么意思?能具体说下需求吗?po的一部分就只需取excel对应列的数据就ok了,多表掺杂起来也不会影响处理难度的哦。您能给下您的具体excel模板与pojo类看下?
相关推荐
在本项目中,我们主要探讨如何使用SpringMVC、Hibernate框架与Apache POI库来实现对MySQL数据库的操作以及数据导出为Excel的功能。这是一项常见的需求,在企业级应用开发中非常实用,尤其对于数据管理和报告生成场景...
在IT行业中,处理数据是常见的任务之一,而Excel文件作为数据存储和交换的常用格式,经常需要与应用程序进行交互。本项目"IO流读写excel文档,并写入数据库"聚焦于利用Java技术栈来实现这一功能,特别是结合了Spring...
整合以上技术,可以构建一个功能完善的Web应用,用户可以通过Struts框架提交请求,Spring进行事务管理并调用业务逻辑,业务逻辑可能涉及到使用Hibernate对数据库进行CRUD操作。同时,应用还可以利用JFreeChart生成...
在IT行业中,SpringMVC、Hibernate和Apache POI是三个非常重要的框架和库,它们分别在Web应用开发、对象关系映射(ORM)以及Excel数据处理方面发挥着关键作用。本项目结合了这三个技术,实现了Excel文件的导入与导出...
3. **异常处理**:良好的错误处理机制是必要的,如捕获并提示用户读写文件或数据库操作中的异常。 文件"Excel数据在(jsp+ssh)环境下导入导出.docx"可能是详细的步骤指南或代码示例,对于实际操作非常有帮助。阅读这...
同时,为了提高性能,可以对大数据量的Excel文件进行分批处理,或者使用多线程技术。 10. **测试**:项目的质量保证需要进行单元测试、集成测试和端到端测试。例如,可以使用JUnit测试导入逻辑,Mockito模拟Spring...
标题中的“ssh+excel+poi”指的是一种在Java开发中结合使用Spring、Struts2和Hibernate(SSM框架)来处理Excel数据的技术。SSH是一个常见的企业级Java Web应用程序开发框架,而Excel处理则主要涉及Apache POI库。...
首先,SSH框架中的Spring负责管理应用程序的依赖和事务,Struts2作为MVC框架处理HTTP请求和响应,而Hibernate则作为ORM(对象关系映射)工具,帮助开发者将Java对象与数据库表进行映射,简化数据操作。 在Excel导入...
这个项目利用了IReport来设计和生成各种类型的报表,同时结合了Spring框架进行业务逻辑管理,以及Hibernate作为数据访问层的工具,实现了与MySQL数据库的交互。 IReport是JasperReports库的一部分,主要用于创建...
在开发Java应用程序,特别是涉及到持久化层操作时,Hibernate是一个非常流行的对象关系映射(ORM)框架。这个压缩包包含了开发Hibernate项目所必需的一些核心库和依赖,它们可以帮助您快速搭建开发环境,避免因缺少...
"poi"则指的是Apache POI项目,它允许Java程序读写Microsoft Office格式的文件,如Excel,这对于数据分析和报告生成非常有用。 在SSH整合中,Spring通常作为核心框架,负责管理其他组件(如Struts2和Hibernate)的...
本项目是一个基于BUI、Spring、SpringMVC、Hibernate、MySQL和Spring Boot的综合性小项目,专注于实现Excel的上传、展示、导出、编辑以及分页功能。该项目旨在提供一个快速开发工具,使得开发者能够便捷地处理Excel...
Hibernate是ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库。在报表生成时,我们通常需要从数据库中查询大量数据,Hibernate可以通过其强大的查询语言HQL或者Criteria API,高效地获取并处理...
Hibernate通过实体类、映射文件或注解将Java对象与数据库表关联,提供了透明的CRUD操作和查询功能,支持一对多、多对一、多对多等各种关系映射。 4. **POI**: POI是Apache软件基金会的开源项目,用于读写...
9. **事务处理**:了解Hibernate中的事务处理机制对于保证数据一致性至关重要。 #### Spring关键技术点 1. **解决多数据源问题**:在复杂的系统架构中,往往需要同时连接多个不同的数据库,Spring提供了一套解决...
Struts、Hibernate、Spring、JFreeChart以及Excel和PDF导出是Java开发中的关键技术和库,它们在构建高效、可维护的企业级应用中扮演着重要角色。以下是对这些技术的详细说明: 1. **Struts**:Struts是Apache软件...
**Hibernate** 是一个对象关系映射(ORM)框架,简化了Java应用程序与数据库之间的交互。它将Java类与数据库表关联起来,允许开发者通过操作对象而不是SQL语句来管理数据。Hibernate支持自动持久化、查询语言(HQL)...
关于Excel报表生成,这通常涉及到Apache POI库,一个用于读写Microsoft Office格式文件的Java库。在这个项目中,可能是通过程序生成Excel工作簿,填充数据,然后提供给用户下载。这种方式允许根据需求动态生成定制化...
在SSH框架中,Struts2的Action会接收用户的请求,调用Service层进行业务逻辑处理,Service层可能会使用Hibernate来查询数据库,获取数据,然后使用POI将数据转化为Excel格式。最后,Action返回一个Result,指示...
POI是Apache软件基金会的一个项目,提供了API来读写Microsoft Office格式的文件,包括Excel。通过POI,我们可以解析Excel文件中的工作簿、工作表、行和单元格,提取所需数据。 4. **数据导入**:在导入过程中,程序...