﻿<?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-Believe it,do it! -随笔分类-工作记录</title><link>http://www.blogjava.net/tunaic/category/34880.html</link><description>Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life. &lt;br&gt;
理想是指路明灯。没有理想，就没有坚定的方向；没有方向，就没有生活。&lt;br&gt;
CTRL+T eclipse</description><language>zh-cn</language><lastBuildDate>Tue, 05 Jul 2016 07:48:34 GMT</lastBuildDate><pubDate>Tue, 05 Jul 2016 07:48:34 GMT</pubDate><ttl>60</ttl><item><title>WEBLOGIC与Tomcat对于Get方法乱码的处理</title><link>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Tue, 05 Jul 2016 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/431100.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/431100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/431100.html</trackback:ping><description><![CDATA[TOMCAT 处理方式： 
1、打开Tomcat安装目录中的conf目录 
2、修改server.xml中的connector一个子项，在其中添加URIEncoding="UTF-8" ，或者是其他的编码方式，变成如下： 



Xml代码 复制代码 收藏代码
1.<Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />  



WEBLOGIC 处理方式： 
1.在web.xml中增加以下配置即可，编码也有可能为GBK,可根据自己的程序编码进行设置 



Xml代码 复制代码 收藏代码
1.<context-param>   
2.    <param-name>weblogic.httpd.inputCharset./*</param-name>   
3.    <param-value>UTF-8</param-value>   
4.</context-param>  <img src ="http://www.blogjava.net/tunaic/aggbug/431100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2016-07-05 14:30 <a href="http://www.blogjava.net/tunaic/archive/2016/07/05/431100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POI操作Excel文档</title><link>http://www.blogjava.net/tunaic/archive/2008/12/31/249322.html</link><dc:creator>三羽</dc:creator><author>三羽</author><pubDate>Wed, 31 Dec 2008 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/tunaic/archive/2008/12/31/249322.html</guid><wfw:comment>http://www.blogjava.net/tunaic/comments/249322.html</wfw:comment><comments>http://www.blogjava.net/tunaic/archive/2008/12/31/249322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tunaic/comments/commentRss/249322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tunaic/services/trackbacks/249322.html</trackback:ping><description><![CDATA[<p>
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p><strong>一．POI简介</strong></p>
            <p>Jakarta POI 是apache的子项目，目标是处理ole2对象。它提供了一组操纵Windows文档的Java API</p>
            <p>目前比较成熟的是HSSF接口，处理MS Excel（97-2002）对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西，而是真正的Excel对象，你可以控制一些属性如sheet,cell等等。</p>
            <p><strong>二．HSSF概况</strong></p>
            <p>HSSF 是Horrible SpreadSheet Format的缩写，也即&#8220;讨厌的电子表格格式&#8221;。也许HSSF的名字有点滑稽，就本质而言它是一个非常严肃、正规的API。通过HSSF，你可以用纯Java代码来读取、写入、修改Excel文件。</p>
            <p>HSSF 为读取操作提供了两类API：usermodel和eventusermodel，即&#8220;用户模型&#8221;和&#8220;事件-用户模型&#8221;。前者很好理解，后者比较抽象，但操作效率要高得多。<br />
            <strong><br />
            三．开始编码</strong></p>
            <p><span style="color: red">1 ． 准备工作</span></p>
            <p>要求:JDK 1.4+POI开发包</p>
            <p>可以到 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 最新的POI工具包</p>
            <p><span style="color: red">2 ． EXCEL 结构</span></p>
            <p>HSSFWorkbook excell 文档对象介绍<br />
            HSSFSheet excell的表单<br />
            HSSFRow excell的行<br />
            HSSFCell excell的格子单元<br />
            HSSFFont excell字体<br />
            HSSFName 名称<br />
            HSSFDataFormat 日期格式<br />
            在poi1.7中才有以下2项：<br />
            HSSFHeader sheet头<br />
            HSSFFooter sheet尾<br />
            和这个样式<br />
            HSSFCellStyle cell样式<br />
            辅助操作包括<br />
            HSSFDateUtil 日期<br />
            HSSFPrintSetup 打印<br />
            HSSFErrorConstants 错误信息表<br />
            <span style="color: red"><br />
            3 ．具体用法实例 （采用 usermodel ）</span></p>
            <p>如何读Excel</p>
            <p>读取Excel文件时，首先生成一个POIFSFileSystem对象，由POIFSFileSystem对象构造一个HSSFWorkbook，该HSSFWorkbook对象就代表了Excel文档。下面代码读取上面生成的Excel文件写入的消息字串：<br />
            </p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span>POIFSFileSystem&nbsp;<wbr>fs=newPOIFSFileSystem(</span><span class="keyword">new</span><span>&nbsp;<wbr>FileInputStream(</span><span class="string">"d:\test.xls"</span><span>));&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span></span>
                <li class=""><span>HSSFWorkbook&nbsp;<wbr>　wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(fs);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　}&nbsp;<wbr></span><span class="keyword">catch</span><span>&nbsp;<wbr>(IOException&nbsp;<wbr>e)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　e.printStackTrace();&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　}&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　HSSFSheet&nbsp;<wbr>sheet&nbsp;<wbr>=&nbsp;<wbr>wb.getSheetAt(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　HSSFRow&nbsp;<wbr>row&nbsp;<wbr>=&nbsp;<wbr>sheet.getRow(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　HSSFCell&nbsp;<wbr>cell&nbsp;<wbr>=&nbsp;<wbr>row.getCell((</span><span class="keyword">short</span><span>)&nbsp;<wbr></span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　String&nbsp;<wbr>msg&nbsp;<wbr>=&nbsp;<wbr>cell.getStringCellValue();&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></li>
            </ol>
            </div>
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span>POIFSFileSystem&nbsp;<wbr>fs=newPOIFSFileSystem(</span><span class="keyword">new</span><span>&nbsp;<wbr>FileInputStream(</span><span class="string">"d:\test.xls"</span><span>));&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span></span>
                <li class=""><span>HSSFWorkbook&nbsp;<wbr>　wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(fs);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　}&nbsp;<wbr></span><span class="keyword">catch</span><span>&nbsp;<wbr>(IOException&nbsp;<wbr>e)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　e.printStackTrace();&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　}&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　HSSFSheet&nbsp;<wbr>sheet&nbsp;<wbr>=&nbsp;<wbr>wb.getSheetAt(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　HSSFRow&nbsp;<wbr>row&nbsp;<wbr>=&nbsp;<wbr>sheet.getRow(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>　　HSSFCell&nbsp;<wbr>cell&nbsp;<wbr>=&nbsp;<wbr>row.getCell((</span><span class="keyword">short</span><span>)&nbsp;<wbr></span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>　　String&nbsp;<wbr>msg&nbsp;<wbr>=&nbsp;<wbr>cell.getStringCellValue();&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></li>
            </ol>
            </div>
            </div>
            <p>如何写excel，</p>
            <p>将excel的第一个表单第一行的第一个单元格的值写成&#8220;a test&#8221;。</p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span>POIFSFileSystem&nbsp;<wbr>fs&nbsp;<wbr>=</span><span class="keyword">new</span><span>&nbsp;<wbr>POIFSFileSystem(</span><span class="keyword">new</span><span>&nbsp;<wbr>FileInputStream(</span><span class="string">"workbook.xls"</span><span>));&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFWorkbook&nbsp;<wbr>wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(fs);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFSheet&nbsp;<wbr>sheet&nbsp;<wbr>=&nbsp;<wbr>wb.getSheetAt(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFRow&nbsp;<wbr>row&nbsp;<wbr>=&nbsp;<wbr>sheet.getRow(</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFCell&nbsp;<wbr>cell&nbsp;<wbr>=&nbsp;<wbr>row.getCell((</span><span class="keyword">short</span><span>)</span><span class="number">0</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cell.setCellValue(</span><span class="string">"a&nbsp;<wbr>test"</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="comment">//&nbsp;<wbr>Write&nbsp;<wbr>the&nbsp;<wbr>output&nbsp;<wbr>to&nbsp;<wbr>a&nbsp;<wbr>file&nbsp;<wbr></span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>FileOutputStream&nbsp;<wbr>fileOut&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>FileOutputStream(</span><span class="string">"workbook.xls"</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>wb.write(fileOut);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
                <li class=""><span>&nbsp;<wbr>&nbsp;<wbr></span>
                <li class="alt"><span>fileOut.close();&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></li>
            </ol>
            </div>
            </div>
            <p><span style="color: red">4 ． 可参考文档</span></p>
            <p>POI 主页：http://jakarta.apache.org/poi/，</p>
            <p>初学者如何快速上手使用POI HSSF</p>
            <p><a style="color: rgb(37,107,132)" href="http://jakarta.apache.org/poi/hssf/quick-guide.html%20%C2%A1%C2%A3" target="blank">http://jakarta.apache.org/poi/hssf/quick-guide.html 。</a></p>
            <p>代码例子 http://blog.java-cn.com/user1/6749/archives/2005/18347.html</p>
            <p>里面有很多例子代码，可以很方便上手。<br />
            <span class="Apple-style-span" style="font-weight: bold"><br />
            </span></p>
            <p><span class="Apple-style-span" style="font-weight: bold">POI的中级应该用</span></p>
            </td>
        </tr>
    </tbody>
</table>
<br />
</p>
<div style="margin-top: 10px; overflow-y: auto; overflow-x: auto; margin-left: 15px">
<p><strong>1、遍历workbook</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">//&nbsp;<wbr>load源文件</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>POIFSFileSystem&nbsp;<wbr>fs&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>POIFSFileSystem(</span><span class="keyword">new</span><span>&nbsp;<wbr>FileInputStream(filePath)); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>HSSFWorkbook&nbsp;<wbr>wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(fs); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span class="keyword">for</span><span>&nbsp;<wbr>(</span><span class="keyword">int</span><span>&nbsp;<wbr>i&nbsp;<wbr>=&nbsp;<wbr></span><span class="number">0</span><span>;&nbsp;<wbr>i&nbsp;<wbr>&lt;&nbsp;<wbr>wb.getNumberOfSheets();&nbsp;<wbr>i++)&nbsp;<wbr>{ &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFSheet&nbsp;<wbr>sheet&nbsp;<wbr>=&nbsp;<wbr>wb.getSheetAt(i); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">for</span><span>&nbsp;<wbr>(</span><span class="keyword">int</span><span>&nbsp;<wbr>i&nbsp;<wbr>=&nbsp;<wbr>sheet.getFirstRowNum();&nbsp;<wbr>i&nbsp;<wbr>&lt;&nbsp;<wbr>sheet.getLastRowNum();&nbsp;<wbr>i&nbsp;<wbr>++)&nbsp;<wbr>{ &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFRow&nbsp;<wbr>row&nbsp;<wbr>=&nbsp;<wbr>sheet.getRow(i); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">if</span><span>&nbsp;<wbr>(row&nbsp;<wbr>!=&nbsp;<wbr></span><span class="keyword">null</span><span>)&nbsp;<wbr>{ &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>。。。操作} &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>} &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>} &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span class="comment">//&nbsp;<wbr>目标文件</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>FileOutputStream&nbsp;<wbr>fos&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>FileOutputStream(objectPath); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span class="comment">//写文件</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>swb.write(fos); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>fos.close();&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong>2、得到列和单元格</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>HSSFRow&nbsp;<wbr>row&nbsp;<wbr>=&nbsp;<wbr>sheet.getRow(i); &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>HSSFCell&nbsp;<wbr>cell&nbsp;<wbr>=&nbsp;<wbr>row.getCell((</span><span class="keyword">short</span><span>)&nbsp;<wbr>j);&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong>3、设置sheet名称和单元格内容为中文</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>wb.setSheetName(n,&nbsp;<wbr></span><span class="string">"中文"</span><span>,HSSFCell.ENCODING_UTF_16);&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>cell.setEncoding((</span><span class="keyword">short</span><span>)&nbsp;<wbr></span><span class="number">1</span><span>); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>cell.setCellValue(</span><span class="string">"中文"</span><span>);&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong>4、单元格内容未公式或数值，可以这样读写</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>cell.getNumericCellValue()&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong><br />
5、设置列宽、行高</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>sheet.setColumnWidth((</span><span class="keyword">short</span><span>)column,(</span><span class="keyword">short</span><span>)width); &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>row.setHeight((</span><span class="keyword">short</span><span>)height);&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong><br />
6、添加区域，合并单元格</strong><br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>Region&nbsp;<wbr>region&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>Region((</span><span class="keyword">short</span><span>)rowFrom,(</span><span class="keyword">short</span><span>)columnFrom,(</span><span class="keyword">short</span><span>)rowTo,(</span><span class="keyword">short</span><span>)columnTo); &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>sheet.addMergedRegion(region); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span class="comment">//得到所有区域</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>sheet.getNumMergedRegions()&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<p><strong>7、常用方法</strong><br />
根据单元格不同属性返回字符串数值<br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;<wbr>String&nbsp;<wbr>getCellStringValue(HSSFCell&nbsp;<wbr>cell)&nbsp;<wbr>{ &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>String&nbsp;<wbr>cellValue&nbsp;<wbr>=&nbsp;<wbr></span><span class="string">""</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">switch</span><span>&nbsp;<wbr>(cell.getCellType())&nbsp;<wbr>{ &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_STRING: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellValue&nbsp;<wbr>=&nbsp;<wbr>cell.getStringCellValue(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">if</span><span>(cellValue.trim().equals(</span><span class="string">""</span><span>)||cellValue.trim().length()&lt;=</span><span class="number">0</span><span>) &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellValue=</span><span class="string">"&nbsp;<wbr>"</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_NUMERIC: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellValue&nbsp;<wbr>=&nbsp;<wbr>String.valueOf(cell.getNumericCellValue()); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_FORMULA: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellValue&nbsp;<wbr>=&nbsp;<wbr>String.valueOf(cell.getNumericCellValue()); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_BLANK: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellValue=</span><span class="string">"&nbsp;<wbr>"</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_BOOLEAN: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">case</span><span>&nbsp;<wbr>HSSFCell.CELL_TYPE_ERROR: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">default</span><span>: &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">break</span><span>; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>} &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">return</span><span>&nbsp;<wbr>cellValue; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<br />
<strong><br />
8、常用单元格边框格式</strong>
<p>虚线HSSFCellStyle.BORDER_DOTTED<br />
实线HSSFCellStyle.BORDER_THIN<br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;<wbr></span><span class="keyword">static</span><span>&nbsp;<wbr>HSSFCellStyle&nbsp;<wbr>getCellStyle(</span><span class="keyword">short</span><span>&nbsp;<wbr>type) &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFWorkbook&nbsp;<wbr>wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>HSSFCellStyle&nbsp;<wbr>style&nbsp;<wbr>=&nbsp;<wbr>wb.createCellStyle(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>style.setBorderBottom(type);</span><span class="comment">//下边框&nbsp;<wbr></span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>style.setBorderLeft(type);</span><span class="comment">//左边框&nbsp;<wbr></span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>style.setBorderRight(type);</span><span class="comment">//右边框&nbsp;<wbr></span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>style.setBorderTop(type);</span><span class="comment">//上边框&nbsp;<wbr></span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span class="keyword">return</span><span>&nbsp;<wbr>style; &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<br />
<strong><br />
9、设置字体和内容位置</strong><br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>HSSFFont&nbsp;<wbr>f&nbsp;<wbr>&nbsp;<wbr>=&nbsp;<wbr>wb.createFont(); &nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>f.setFontHeightInPoints((</span><span class="keyword">short</span><span>)&nbsp;<wbr></span><span class="number">11</span><span>);</span><span class="comment">//字号</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);</span><span class="comment">//加粗</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>style.setFont(f); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>style.setAlignment(HSSFCellStyle.ALIGN_CENTER);</span><span class="comment">//左右居中</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);</span><span class="comment">//上下居中</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>style.setRotation(</span><span class="keyword">short</span><span>&nbsp;<wbr>rotation);</span><span class="comment">//单元格内容的旋转的角度</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>HSSFDataFormat&nbsp;<wbr>df&nbsp;<wbr>=&nbsp;<wbr>wb.createDataFormat(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>style1.setDataFormat(df.getFormat(</span><span class="string">"0.00%"</span><span>));</span><span class="comment">//设置单元格数据格式</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>cell.setCellFormula(string);</span><span class="comment">//给单元格设公式</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>style.setRotation(</span><span class="keyword">short</span><span>&nbsp;<wbr>rotation);</span><span class="comment">//单元格内容的旋转的角度</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>cell.setCellStyle(style); &nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
</div>
<br />
<strong><br />
10、插入图片</strong><br />
论坛里看到的<br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="bar"></div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span class="comment">//先把读进来的图片放到一个ByteArrayOutputStream中，以便产生ByteArray</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>ByteArrayOutputStream&nbsp;<wbr>byteArrayOut&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>ByteArrayOutputStream(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>BufferedImage&nbsp;<wbr>bufferImg&nbsp;<wbr>=&nbsp;<wbr>ImageIO.read(</span><span class="keyword">new</span><span>&nbsp;<wbr>File(</span><span class="string">"ok.jpg"</span><span>)); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>ImageIO.write(bufferImg,</span><span class="string">"jpg"</span><span>,byteArrayOut); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span class="comment">//读进一个excel模版</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>FileInputStream&nbsp;<wbr>fos&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>FileInputStream(filePathName+</span><span class="string">"/stencil.xlt"</span><span>);&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>fs&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>POIFSFileSystem(fos); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span class="comment">//创建一个工作薄</span>&nbsp;<span>&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>HSSFWorkbook&nbsp;<wbr>wb&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFWorkbook(fs); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>HSSFSheet&nbsp;<wbr>sheet&nbsp;<wbr>=&nbsp;<wbr>wb.getSheetAt(</span><span class="number">0</span><span>); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>HSSFPatriarch&nbsp;<wbr>patriarch&nbsp;<wbr>=&nbsp;<wbr>sheet.createDrawingPatriarch(); &nbsp;<wbr>&nbsp;<wbr></span>
    <li class=""><span>HSSFClientAnchor&nbsp;<wbr>anchor&nbsp;<wbr>=&nbsp;<wbr></span><span class="keyword">new</span><span>&nbsp;<wbr>HSSFClientAnchor(</span><span class="number">0</span><span>,</span><span class="number">0</span><span>,</span><span class="number">1023</span><span>,</span><span class="number">255</span><span>,(</span><span class="keyword">short</span><span>)&nbsp;<wbr></span><span class="number">0</span><span>,</span><span class="number">0</span><span>,(</span><span class="keyword">short</span><span>)</span><span class="number">10</span><span>,</span><span class="number">10</span><span>);&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr></span>
    <li class="alt"><span>patriarch.createPicture(anchor&nbsp;<wbr>,&nbsp;<wbr>wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));&nbsp;<wbr>&nbsp;<wbr></span></li>
</ol>
</div>
<p class="alt"><strong>11、</strong>设置列自动换行</p>
<p class="alt"><font face="宋体">&nbsp;<wbr>&nbsp;<wbr>&nbsp;HSSFCellStyle cellStyle =&nbsp;<wbr>&nbsp;workbook.createCellStyle();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>cellStyle.setWrapText(true);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>sheet.setDefaultColumnStyle((short)0, cellStyle);</font></p>
<p class="alt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;设置列的宽度</p>
<p class="alt"><font face="宋体">&nbsp;<wbr>&nbsp;<wbr>&nbsp;sheet.setColumnWidth((short)0,(short)9000);</font></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(0,0,0)">&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr></span></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(0,0,0)">&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr>&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr></span><font size="+0"><span class="Apple-style-span" style="color: rgb(0,0,0)">sheet.setDefaultColumnStyle((short)0, cellStyle);</span></font></p>
<p class="alt"><font size="+0"><span class="Apple-style-span" style="color: rgb(0,0,0)">&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr>&nbsp;与</span></font></p>
<p class="alt"><font face="宋体"><span class="Apple-style-span" style="color: rgb(0,0,0)">&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr>&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr>sheet.setDefaultColumnWidth((short)70);冲突</span></font></p>
<p class="alt"><font size="+0"><span class="Apple-style-span" style="color: rgb(0,0,0)">&nbsp;</span><span class="Apple-style-span" style="color: rgb(0,0,0)"><wbr>&nbsp;只会换行 不会设置列宽</span></font></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(255,0,0)"><br />
</span></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(255,0,0)">单元格拷贝示例：</span></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(255,0,0)"><br />
</span></p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(255,0,0)">
<p class="alt">package testpoi;</p>
<p class="alt"><br />
</p>
<p class="alt">import java.io.FileInputStream;</p>
<p class="alt">import java.io.FileNotFoundException;</p>
<p class="alt">import java.io.FileOutputStream;</p>
<p class="alt">import java.io.IOException;</p>
<p class="alt"><br />
</p>
<p class="alt">import org.apache.poi.hssf.usermodel.HSSFCell;</p>
<p class="alt">import org.apache.poi.hssf.usermodel.HSSFRow;</p>
<p class="alt">import org.apache.poi.hssf.usermodel.HSSFSheet;</p>
<p class="alt">import org.apache.poi.hssf.usermodel.HSSFWorkbook;</p>
<p class="alt">import org.apache.poi.hssf.util.Region;</p>
<p class="alt">import org.apache.poi.poifs.filesystem.POIFSFileSystem;</p>
<p class="alt">/**</p>
<p class="alt">&nbsp;* 将某SHEET页中的某几行复制到某SHEET页的某几行中。抱括被合并了的单元格。</p>
<p class="alt">&nbsp;*/</p>
<p class="alt">public class RowCopy {</p>
<p class="alt"><br />
</p>
<p class="alt">/**</p>
<p class="alt">* @param args</p>
<p class="alt">* @throws IOException</p>
<p class="alt">* @throws FileNotFoundException</p>
<p class="alt">*/</p>
<p class="alt"><br />
</p>
<p class="alt">@SuppressWarnings("deprecation")</p>
<p class="alt">public static void main(String[] args) {</p>
<p class="alt">try {</p>
<p class="alt">POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(</p>
<p class="alt">"d:\\exlsample.xls"));</p>
<p class="alt">HSSFWorkbook wb = new HSSFWorkbook(fs);</p>
<p class="alt"><br />
</p>
<p class="alt">// source为源sheet 页,target为目标sheet页</p>
<p class="alt">copyRows(wb, "source", "target", 5, 6, 20);</p>
<p class="alt">FileOutputStream fileOut = new FileOutputStream("d:\\exlsample.xls");</p>
<p class="alt">wb.write(fileOut);</p>
<p class="alt">fileOut.flush();</p>
<p class="alt">fileOut.close();</p>
<p class="alt">System.out.println("Operation finished");</p>
<p class="alt">} catch (Exception e) {</p>
<p class="alt">e.printStackTrace();</p>
<p class="alt">}</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">/**</p>
<p class="alt">* @param wb HSSFWorkbook</p>
<p class="alt">* @param pSourceSheetName 源sheet页名称</p>
<p class="alt">* @param pTargetSheetName 目标sheet页名称</p>
<p class="alt">* @param pStartRow 源sheet页中的起始行</p>
<p class="alt">* @param pEndRow &nbsp;源sheet页中的结束行</p>
<p class="alt">* @param pPosition 目标sheet页中的开始行</p>
<p class="alt">*/</p>
<p class="alt">public static void copyRows(HSSFWorkbook wb, String pSourceSheetName,</p>
<p class="alt">String pTargetSheetName, int intStartRow, int intEndRow, int intPosition) {</p>
<p class="alt">// EXECL中的行是从1开始的，而POI中是从0开始的，所以这里要减1.</p>
<p class="alt">int pStartRow = intStartRow - 1;</p>
<p class="alt">int pEndRow = intEndRow - 1;</p>
<p class="alt">int pPosition = intPosition - 1;</p>
<p class="alt">HSSFRow sourceRow = null;</p>
<p class="alt">HSSFRow targetRow = null;</p>
<p class="alt">HSSFCell sourceCell = null;</p>
<p class="alt">HSSFCell targetCell = null;</p>
<p class="alt">HSSFSheet sourceSheet = null;</p>
<p class="alt">HSSFSheet targetSheet = null;</p>
<p class="alt">Region region = null;</p>
<p class="alt">int cType;</p>
<p class="alt">int i;</p>
<p class="alt">int j;</p>
<p class="alt">int targetRowFrom;</p>
<p class="alt">int targetRowTo;</p>
<p class="alt"><br />
</p>
<p class="alt">if ((pStartRow == -1) || (pEndRow == -1)) {</p>
<p class="alt">return;</p>
<p class="alt">}</p>
<p class="alt">sourceSheet = wb.getSheet(pSourceSheetName);</p>
<p class="alt">targetSheet = wb.getSheet(pTargetSheetName);</p>
<p class="alt">System.out.println(sourceSheet.getNumMergedRegions());</p>
<p class="alt">// 拷贝合并的单元格</p>
<p class="alt">for (i = 0; i &lt; sourceSheet.getNumMergedRegions(); i++) {</p>
<p class="alt">region = sourceSheet.getMergedRegionAt(i);</p>
<p class="alt">if ((region.getRowFrom() &gt;= pStartRow)</p>
<p class="alt">&amp;&amp; (region.getRowTo() &lt;= pEndRow)) {</p>
<p class="alt">targetRowFrom = region.getRowFrom() - pStartRow + pPosition;</p>
<p class="alt">targetRowTo = region.getRowTo() - pStartRow + pPosition;</p>
<p class="alt">region.setRowFrom(targetRowFrom);</p>
<p class="alt">region.setRowTo(targetRowTo);</p>
<p class="alt">targetSheet.addMergedRegion(region);</p>
<p class="alt">}</p>
<p class="alt">}</p>
<p class="alt">// 设置列宽</p>
<p class="alt">for (i = pStartRow; i &lt;= pEndRow; i++) {</p>
<p class="alt">sourceRow = sourceSheet.getRow(i);</p>
<p class="alt">if (sourceRow != null) {</p>
<p class="alt">for (j = sourceRow.getLastCellNum(); j &gt; sourceRow</p>
<p class="alt">.getFirstCellNum(); j--) {</p>
<p class="alt">targetSheet</p>
<p class="alt">.setColumnWidth(j, sourceSheet.getColumnWidth(j));</p>
<p class="alt">targetSheet.setColumnHidden(j, false);</p>
<p class="alt">}</p>
<p class="alt">break;</p>
<p class="alt">}</p>
<p class="alt">}</p>
<p class="alt">// 拷贝行并填充数据</p>
<p class="alt">for (; i &lt;= pEndRow; i++) {</p>
<p class="alt">sourceRow = sourceSheet.getRow(i);</p>
<p class="alt">if (sourceRow == null) {</p>
<p class="alt">continue;</p>
<p class="alt">}</p>
<p class="alt">targetRow = targetSheet.createRow(i - pStartRow + pPosition);</p>
<p class="alt">targetRow.setHeight(sourceRow.getHeight());</p>
<p class="alt">for (j = sourceRow.getFirstCellNum(); j &lt; sourceRow</p>
<p class="alt">.getPhysicalNumberOfCells(); j++) {</p>
<p class="alt">sourceCell = sourceRow.getCell(j);</p>
<p class="alt">if (sourceCell == null) {</p>
<p class="alt">continue;</p>
<p class="alt">}</p>
<p class="alt">targetCell = targetRow.createCell(j);</p>
<p class="alt">targetCell.setCellStyle(sourceCell.getCellStyle());</p>
<p class="alt">cType = sourceCell.getCellType();</p>
<p class="alt">targetCell.setCellType(cType);</p>
<p class="alt">switch (cType) {</p>
<p class="alt">case HSSFCell.CELL_TYPE_BOOLEAN:</p>
<p class="alt">targetCell.setCellValue(sourceCell.getBooleanCellValue());</p>
<p class="alt">System.out.println("--------TYPE_BOOLEAN:"</p>
<p class="alt">+ targetCell.getBooleanCellValue());</p>
<p class="alt">break;</p>
<p class="alt">case HSSFCell.CELL_TYPE_ERROR:</p>
<p class="alt">targetCell</p>
<p class="alt">.setCellErrorValue(sourceCell.getErrorCellValue());</p>
<p class="alt">System.out.println("--------TYPE_ERROR:"</p>
<p class="alt">+ targetCell.getErrorCellValue());</p>
<p class="alt">break;</p>
<p class="alt">case HSSFCell.CELL_TYPE_FORMULA:</p>
<p class="alt">// parseFormula这个函数的用途在后面说明</p>
<p class="alt">targetCell.setCellFormula(parseFormula(sourceCell</p>
<p class="alt">.getCellFormula()));</p>
<p class="alt">System.out.println("--------TYPE_FORMULA:"</p>
<p class="alt">+ targetCell.getCellFormula());</p>
<p class="alt">break;</p>
<p class="alt">case HSSFCell.CELL_TYPE_NUMERIC:</p>
<p class="alt">targetCell.setCellValue(sourceCell.getNumericCellValue());</p>
<p class="alt">System.out.println("--------TYPE_NUMERIC:"</p>
<p class="alt">+ targetCell.getNumericCellValue());</p>
<p class="alt">break;</p>
<p class="alt">case HSSFCell.CELL_TYPE_STRING:</p>
<p class="alt">targetCell</p>
<p class="alt">.setCellValue(sourceCell.getRichStringCellValue());</p>
<p class="alt">System.out.println("--------TYPE_STRING:" + i</p>
<p class="alt">+ targetCell.getRichStringCellValue());</p>
<p class="alt">break;</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">/**</p>
<p class="alt">* POI对Excel公式的支持是相当好的，但是有一个问题，如果公式里面的函数不带参数，比如now()或today()，</p>
<p class="alt">* 那么你通过getCellFormula()取出来的值就是now(ATTR(semiVolatile))和today(ATTR(semiVolatile))，</p>
<p class="alt">* 这样的值写入Excel是会出错的，这也是我上面copyRow的函数在写入公式前要调用parseFormula的原因，</p>
<p class="alt">* parseFormula这个函数的功能很简单，就是把ATTR(semiVolatile)删掉。</p>
<p class="alt">* @param pPOIFormula</p>
<p class="alt">* @return</p>
<p class="alt">*/</p>
<p class="alt">private static String parseFormula(String pPOIFormula) {</p>
<p class="alt">final String cstReplaceString = "ATTR(semiVolatile)"; //$NON-NLS-1$</p>
<p class="alt">StringBuffer result = null;</p>
<p class="alt">int index;</p>
<p class="alt"><br />
</p>
<p class="alt">result = new StringBuffer();</p>
<p class="alt">index = pPOIFormula.indexOf(cstReplaceString);</p>
<p class="alt">if (index &gt;= 0) {</p>
<p class="alt">result.append(pPOIFormula.substring(0, index));</p>
<p class="alt">result.append(pPOIFormula.substring(index</p>
<p class="alt">+ cstReplaceString.length()));</p>
<p class="alt">} else {</p>
<p class="alt">result.append(pPOIFormula);</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">return result.toString();</p>
<p class="alt">}</p>
<p class="alt"><br />
</p>
<p class="alt">}</p>
</span>
<p>&nbsp;</p>
<p class="alt"><span class="Apple-style-span" style="color: rgb(255,0,0)"><br />
</span></p>
</div>
</div>
<img src ="http://www.blogjava.net/tunaic/aggbug/249322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tunaic/" target="_blank">三羽</a> 2008-12-31 13:16 <a href="http://www.blogjava.net/tunaic/archive/2008/12/31/249322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>