﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-风人园-随笔分类-Common</title><link>http://www.blogjava.net/wuxufeng8080/category/41796.html</link><description>弱水三千，只取一瓢，便能解渴；佛法无边，奉行一法，便能得益。</description><language>zh-cn</language><lastBuildDate>Mon, 21 Sep 2009 09:16:54 GMT</lastBuildDate><pubDate>Mon, 21 Sep 2009 09:16:54 GMT</pubDate><ttl>60</ttl><item><title>Jxls 导出excel</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/09/21/295879.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Mon, 21 Sep 2009 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/09/21/295879.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/295879.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/09/21/295879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/295879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/295879.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;exportExcel(String&nbsp;templateFileName,&nbsp;Map&nbsp;beans,&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,HttpServletResponse&nbsp;response){<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">application/vnd.ms-excel</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">attachment;&nbsp;filename=excel.xls</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XLSTransformer&nbsp;transformer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XLSTransformer();<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedInputStream(<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(RequestUtil.getRealPath(request,&nbsp;templateFileName)));<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSSFWorkbook&nbsp;workbook&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;transformer.transformXLS(is,&nbsp;beans);<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.getOutputStream();<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workbook.write(os);<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is.close();<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.flush();<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
通过服务器端获取模版文件的绝对路径，然后通过response来输出到页面，就可以实现导出，这个比poi等等都简单很多，用起来比较舒服。<br />
服务器路径的获取：request.getSession().getServletContext().getRealPath(name);<br />
这样就可以获得web目录下某个文件的服务器端路劲。<br />
<br />
今天在使用的时候发现一个问题，就是在使用表达式的时候有一个地方需要注意<br />
<table style="width: 84pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="112" border="0" x:str>
    <colgroup>
    <col style="width: 84pt; mso-width-source: userset; mso-width-alt: 4096" width="112">
    <tbody>
        <tr style="height: 12.75pt" height="17">
            <td style="width: 84pt; height: 12.75pt" width="112" height="17">${item.itemQty}</td>
        </tr>
    </tbody>
</table>
像上面的这个表达式就会出错，这里也没有看源代码，具体不是很清楚，但是看了一下日志，发现，后面的这个item也被替换了，所以觉得这个可能是jxls的bug或者是作者偷懒搞的。<br />
<br />
以后只需要注意字段名不能跟bean的名字一样，否则就出错。<br />
<br />
仅此记录 
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/295879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-09-21 16:21 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/09/21/295879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>