<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Terryang</title>
    <description></description>
    <link>http://terryang.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>notepad++官网公然抵制2008北京奥运会</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/219101" style="color:red;">http://terryang.javaeye.com/blog/219101</a>&nbsp;
          发表时间: 2008年07月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>看图片</p>
<p>网址：<a href="http://notepad-plus.sourceforge.net/tw/site.htm">http://notepad-plus.sourceforge.net/tw/site.htm</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/219101#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jul 2008 16:01:00 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/219101</link>
        <guid>http://terryang.javaeye.com/blog/219101</guid>
      </item>
      <item>
        <title>ServletContextListener的contextDestroyed方法没有调用</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/202889" style="color:red;">http://terryang.javaeye.com/blog/202889</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>各位大侠麻烦看一下ServletContextListener的contextDestroyed方法是什么时候调用的？不就是服务器关闭，我的就是tomcat关闭时调用的啊。我怎么调用不了啊？是不是有什么条件啊？现在我就想服务器关闭的时候做一些事情，请问还有什么方法吗？</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/202889#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 13 Jun 2008 11:35:35 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/202889</link>
        <guid>http://terryang.javaeye.com/blog/202889</guid>
      </item>
      <item>
        <title>请大家帮忙写一个sql语句</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/191606" style="color:red;">http://terryang.javaeye.com/blog/191606</a>&nbsp;
          发表时间: 2008年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>现在数据库有一个字段code，存的是拥有某个权限的人的id，比如说&ldquo;2,6,10&rdquo;;现在我想看看当前用户的id是否包含在code这个字段中。请大家帮忙设计一下sql语句。</p>
<p>假设现在我的id是 2</p>
<p>from tablename where code&nbsp; like&nbsp; %2% &nbsp;，会把&ldquo;22，12&rdquo;这样的字段也会查出来。</p>
<p>&nbsp;</p>
<p>我写了一个语句能用，但是太麻烦了，那位路过帮忙写一句，先在这里谢过了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/191606#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 May 2008 23:11:33 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/191606</link>
        <guid>http://terryang.javaeye.com/blog/191606</guid>
      </item>
      <item>
        <title>原创----我的一个小框架</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/188397" style="color:red;">http://terryang.javaeye.com/blog/188397</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这里写出我自己的一个框架。希望多多指正。我觉得应该也算是一个mvc了吧，是不断的完善到现在，觉得可以拿出来丑丑了，呵呵。这里将主要的部分，如果需要源码的可以给我留言。好了，开始。</p>
<p>先从中间层讲起，也就是mvc中的c，也叫控制器，是整个框架的核心。在前台发送来请求先到web.xml中映射，这个和普通的servlet配置是一样的。</p>
<pre name="code" class="xml">&lt;servlet&gt;
	&lt;servlet-name&gt;Servlets&lt;/servlet-name&gt; &lt;!--映射到Servlets.java这个控制器上面--&gt;
	&lt;servlet-class&gt;com.servlets.Servlets&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
	&lt;servlet-name&gt;Servlets&lt;/servlet-name&gt;
	&lt;url-pattern&gt;*.do&lt;/url-pattern&gt; &lt;!--接受.do的请求--&gt;
&lt;/servlet-mapping&gt;</pre>
<p>和普通的servlet配置一样吧。</p>
<p>因为下面要用到一些前台传过来的参数，所以先把前台的参数说明一下：</p>
<p>以一个form传递为例子：</p>
<p>&nbsp;&nbsp;&nbsp; user.do是action请求，&quot;user&quot;是下面要用到的类名</p>
<p>&nbsp;&nbsp;&nbsp; invokeMethod是类中的方法名，即&quot;login&quot;</p>
<pre name="code" class="html">&lt;form name=&quot;login&quot; action=&quot;user.do&quot; method=&quot;post&quot;&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;invokeMethod&quot; value=&quot;login&quot;&gt;
	&lt;input type=&quot;text&quot; name=&quot;uesrname&quot; /&gt;
	&lt;input type=&quot;submit&quot; value=&quot;登录&quot; /&gt;
 &lt;/form&gt;</pre>
&nbsp;
<p>关键的地方就在Servlets.java这个文件里面</p>
<pre name="code" class="java">		String urlstr=request.getRequestURL().toString(); //获得请求的url
		String str = urlstr.substring(urlstr.lastIndexOf(&quot;/&quot;) + 1, urlstr.length());//获得 &quot;*.do&quot; 这个action参数，上面form传过来的话就是得到 &quot;user.do&quot;
		String filename = str.substring(0, str.lastIndexOf(&quot;.&quot;));//获得 &quot;.do&quot; 前面的字符串即：&quot;user&quot;
		String actionName=Utils.toUpperCaseFirst(filename)+&quot;Action&quot;;
		/**
		将user首字母大写后加上&quot;Action&quot; 得到类名，就是学要到达的地方--&gt;&quot;UserAction.java&quot;
		到达这个类以后，前台页面form那个hidden参数 &quot;invokeMethod&quot; 是这个类其中的一个方法，
		根据java的反射机制调用这个方法进行相应的操作。两次反射就是整个框架的核心。
		总体来说，就是前台的action是一个类名,&quot;invokeMethod&quot;是这个类的方法，根据java的反射
		调用这个类的方法，实现mvc中的m，即action操作
		**/
		List params = new ArrayList();
		 params.add(request);//params
		params.add(response);
		Object object[] = { params };//params 是两个参数,即：request  和 response
		CommandUtils.invoke(object, &quot;com.actions.&quot; + actionName);

</pre>
<p>&nbsp; 反射的代码见下面的附件。</p>
<p>现在就剩action的具体操作了，在这个例子中也就是UserAction.java中login这个方法的具体操作：</p>
<pre name="code" class="java">       /**
	这个类必须继承自ActionCommand (见附件)
	类名中的User即为前台action请求&quot;.do&quot;前的参数,在servlet中转化为UserAction 
	login即为前台页面form中的hidden参数invokeMethod	
	**/

public class UserAction extends ActionCommand {
 /*
	 * 用户登录验证
	 */
	public void login(List args) throws IOException {
		HttpServletRequest request = (HttpServletRequest) args.get(0);//获得request
		HttpServletResponse response = (HttpServletResponse) args.get(1);//获得response
		String uername = request.getParameter(&quot;username&quot;);//测试获得用户名
		//下面就是可进行你的登录具体操作了
	
	}

}

</pre>
<p>&nbsp; 再说说怎么使用这个框架：</p>
<p>&nbsp;&nbsp;&nbsp; 前台的话就是一个&quot;.do&quot;的action的请求， 比如说上面的&ldquo;use.do&rdquo; ，在后台建立一个action类，UserAction.java继承ActionCommand,首字母必须大写</p>
<p>&nbsp;&nbsp;&nbsp; 在该类中建一个名字为前台invokeMethod参数的方法名，并带入一个List参数。OK，测试一下！</p>
<p>好了，完是完了，不知道大家看懂没有了。呵呵。多多指点。下面附上两个反射的代码。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/188397#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Apr 2008 13:58:38 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/188397</link>
        <guid>http://terryang.javaeye.com/blog/188397</guid>
      </item>
      <item>
        <title>树目录结构数据层的设计问题</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/187141" style="color:red;">http://terryang.javaeye.com/blog/187141</a>&nbsp;
          发表时间: 2008年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这两天遇到一个树目录的问题，前台的问题基本上已经确定了，使用dtree，比较不错的一个开源树，可以根据需要添加自己的function。</p>
<p>先说说具体的流程：</p>
<p>&nbsp;&nbsp;&nbsp; 用户点击一个书目录节点，可以展开该目录下的所有文件夹，同时把该文件夹以及所有子文件夹下面的文件在右边list出来。这样的话用数据库就必须有很好的设计思路(网上看到一个，下面会提到)，不然一个递归循环就得等半天，对数据库压力也比较大。但是我是想用xml文件来存取目录树的结构和该目录下文件的id,右边要显示的一些文件的信息还是用数据库来存取。因为xml文件的结构本身就是树型的，存取起来也比较方便.下面说说具体的步骤，xml放入操作可以使用jdom。我用的是dom4j，可能是先入为主吧。</p>
<p>我的xml测试文件log.xml：</p>
<pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;gbk&quot;?&gt;

&lt;log&gt;

    &lt;group&gt;		 

		&lt;folder id=&quot;1&quot;&gt; &lt;!--下面会获得该节点的对象--&gt;

			&lt;folder&gt;

			      &lt;fileId&gt;1&lt;/fileId&gt;	

			&lt;/folder&gt;

			&lt;fileId&gt;2&lt;/fileId&gt;  &lt;!---文件的id号--&gt;

			&lt;fileId&gt;3&lt;/fileId&gt;	

		&lt;/folder&gt;	

		&lt;folder id=&quot;2&quot;&gt;

			&lt;folder id=&quot;3&quot;&gt;

			    &lt;!---空文件夹--&gt;

			&lt;/folder&gt;

		&lt;/folder&gt;	

		&lt;fileId&gt;4&lt;/fileId&gt;	

		&lt;fileId&gt;5&lt;/fileId&gt;		

	&lt;/group&gt;

&lt;/log&gt; 

</pre>
&nbsp;
<p>下面将从xml文件中读取出指定文件夹下的所有文件的id以便从数据库中读取文件信息：</p>
<pre name="code" class="java">SAXReader saxReader = new SAXReader();



String fileName=&quot;d:/log.xml&quot;;



try {

	

	 //读入一个xml文件，转化为Document 对象

	Document document = saxReader.read(new File(fileName));



     /**

	*  获得log/group/folder节点内id属性值为1的节点	

	*  你没感觉到这种做法很想数据库的查询操作吗。是不是很神奇呢！

	**/



	Element  e=(Element)document.selectSingleNode(&quot;log/group/folder[@id='1']&quot;);



	//获得该节点下名称为 fileId 节点的<span>迭代器</span>



	

	Iterator  iterator = e.elementIterator(&quot;fileId&quot;);



	//下面就可以获得该文件夹下所有文件的id，然后就是从数据库查询了，我只是做了一个打印的测试。

	while(iterator.hasNext()){



	     System.out.println(((Element)iterator.next()).getText());



      } catch (DocumentException e) {



		e.printStackTrace();



	}</pre>
<p>&nbsp;
至于插入数据的话指定到要插入的位置使用</p>
<pre name="code" class="java">element.setText(&quot;terryang&quot;);



//下面是实现更新文件

XMLWriter writer = new XMLWriter(new FileWriter(new File(&quot;d:/log.xml&quot;)));

writer.write(document);

writer.close();

</pre>
<p>&nbsp;添加，修改，删除，插入的操作差不多，大家可以baidu，google一下。</p>
<p>可以看出，这样就可以很简单的实现节点的添加，修改，删除，插入，查询等操作。</p>
<p>好了，xml存取树节点的方法就是这样，希望大家多多指正。</p>
<p>&nbsp;</p>
<p>下面我要说的是一个很好的数据库设计思路：</p>
<p>给出网址 <a href="http://www.java3z.com/cwbwebhome/article/article2/2781.html?id=1306" title="树的快速算法实现" target="_blank">http://www.java3z.com/cwbwebhome/article/article2/2781.html?id=1306</a>
</p>
<p>我就不在这再复制粘贴了！</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/187141#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Apr 2008 20:19:30 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/187141</link>
        <guid>http://terryang.javaeye.com/blog/187141</guid>
      </item>
      <item>
        <title>js的一个问题</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/186336" style="color:red;">http://terryang.javaeye.com/blog/186336</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>问大家一个关于js函数写法的问题：</p>
<p>举一个分页的例子(只是用来测试)</p>
<p>第一种写法：</p>
<pre name="code" class="js">function GoFirstPage()//跳到第一页
{
	Form.pageCur.value = &quot;1&quot;;//设置值，还可以做一些其他操作
	Form.submit();//提交表单，下同
}

function GoPrevPage()//跳到前一页
{
	Form.pageCur.value = Form.pagePre.value;
	Form.submit();
}

function GoNextPage()//跳到下一页
{
	Form.pageCur.value = Form.pageNext.value;
	Form.submit();
}

function GoEndPage()//跳到最后一页
{
	Form.pageCur.value = Form.pageMax.value;
	Form.submit();
}</pre>
<p>&nbsp;第二种写法：</p>
<pre name="code" class="java">function GoToPage(pageNum )

{

	Form.pageCur.value =pageNum； 	

	Form.submit();

 }</pre>
<p>&nbsp;第一种写法的话很直观，但是代码量多。第二种写法代码量少，但别人读起来也许不如第一种那么容易懂。</p>
<p>大家讨论一下那种方法比较可取（个人偏向于第二种），重点是效率问题。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/186336#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 12:45:09 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/186336</link>
        <guid>http://terryang.javaeye.com/blog/186336</guid>
      </item>
      <item>
        <title>关于request.getAttribute(&quot;param&quot;);null的问题</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/186180" style="color:red;">http://terryang.javaeye.com/blog/186180</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>大家经常会用到request.getAttribute(&quot;param&quot;);这个表达式去获得前面传过来的对象。但是如果这个表达式获得的是一个
null值得话，你直接强制转换为原型的话就会出问题，这里写一下我的解决办法，大家还有什么更好的办法 可以拿出来分享一下啊！</p>
<pre name="code" class="java">
Object object=request.getAttribute(“param”);



List list=(object==null?new ArrayList():(List)object);

</pre>
&nbsp;
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/186180#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 09:18:15 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/186180</link>
        <guid>http://terryang.javaeye.com/blog/186180</guid>
      </item>
      <item>
        <title>java读取excel文件</title>
        <author>terryang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://terryang.javaeye.com">terryang</a>&nbsp;
          链接：<a href="http://terryang.javaeye.com/blog/182932" style="color:red;">http://terryang.javaeye.com/blog/182932</a>&nbsp;
          发表时间: 2008年04月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>因为公司工程的需要，所以学习了一下java读取excel的方法，开始以为会比较复杂。写完了也觉得没什么。还是归功于java的强大啊！（后来我从网上查到js也可以读取excel，不过他的那个ActiveXObject对象好像在火狐上面不支持。）今天把代码写出来，希望大家多多指点。我可以多多改进。个人觉得好像excel读取没有一个通用的解法。因为我们用hibernate框架，所以我的思路是把一行读取为一个对象，有几行就有几个对象，然后将其插入数据库。读取的excel只能为固定的格式。</p>
<p>&nbsp;</p>
<pre name="code" class="java">    /*

     * 导入excel信息

     */

    public boolean attendanceAdd(AttendanceInfoRecordAddForm form)

    {

        String filePath = form.getFilePath();//从struts的form中提取出文件路径

        int rowCount; // excel的行数

        int colCount; // excel的列数

        Workbook rwb = null;

        try

        {

            InputStream is = new FileInputStream(filePath);

            rwb = Workbook.getWorkbook(is);

        }

        catch (FileNotFoundException e)

        {

            System.out.println(&quot;文件路径错误！&quot;);

            return false;

        }

        catch (BiffException e)

        {

            e.printStackTrace();

            return false;

        }

        catch (IOException e)

        {

            e.printStackTrace();

            return false;

        }

        Sheet rs = rwb.getSheet(0);//得到第一张工作表

        rowCount = rs.getRows();//行数

        colCount = rs.getColumns();//列数

        List excelArray = new ArrayList();//对象数组

        loop1: for (int i = 1; i &lt; rowCount; i++)

        {

            HzOaEhrAttendanceInfo excel = new HzOaEhrAttendanceInfo();//hibernate对象

            for (int j = 0; j &lt; colCount; j++)

            {

                Cell cell = rs.getCell(j, i);//得到单元格

                String content = cell.getContents();//得到单元格内容转换为字符串

                if (content == &quot;&quot;)//如果一个单元格为空，则该行不形成对象

                    continue loop1;

                switch (j)

                {

                case 0:

                    excel.setInfoOrder(Integer.valueOf(content));//转换为Integer对象

                    break;

                case 1:

                    excel.setName(content);

                    break;

                case 2:

                    excel.setThisDate(UTDate.getDate(content));//UTDate为一个工具类，将字符串转换为date类型

                    break;

                case 3:

                    excel.setThisTime(content);

                    break;

                case 4:

                    excel.setOnDutyTime(content);

                    break;

                case 5:

                    excel.setOffDutyTime(content);

                    break;

                case 6:

                    excel.setMyOnDutyTime(content);

                    break;

                case 7:

                    excel.setMyOffDutyTime(content);

                    break;

                case 8:

                    excel.setShouldNumber(Integer.valueOf(content));

                    break;

                case 9:

                    excel.setTrueNumber(Integer.valueOf(content));

                    break;

                case 10:

                    excel.setLateTime(content);

                    break;

                case 11:

                    excel.setLeaveTime(content);

                    break;

                case 12:

                    excel.setAbsenteeism(Integer.valueOf(content));

                    break;

                case 13:

                    excel.setOverTime(content);

                    break;

                default:

                    break;

                }

            }

            excelArray.add(excel);//将对象加入数组

        }

        //在这里可以把对象数组插入到数据库

        return true;

    }</pre>
<p>&nbsp;可能有点麻烦，水平有限，那位有好的解决办法，还望不吝赐教。由于客户是要求读入规定的excel文档，所以后期改进了一下，主要是加了一些判断是不是规定的文档。在此就不再写出来了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://terryang.javaeye.com/blog/182932#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Apr 2008 15:26:17 +0800</pubDate>
        <link>http://terryang.javaeye.com/blog/182932</link>
        <guid>http://terryang.javaeye.com/blog/182932</guid>
      </item>
  </channel>
</rss>