poi導出excel,以字符串格式輸出數字


裝載自 http://blog.csdn.net/z69183787/article/details/48133809 

解決了我數字前面有0被省略問題


做過很多次導出excel了。都碰到一個問題,內容里如果包含一個比較長的數字,比如訂單號“2546541656596”,excel會自動變成科學計數法。。。 

弄過好幾次都沒有解決,最近又要導出excel了,下決心一定要找到解決辦法 
自己在excel里測試過,較長的數字,都會自動變成科學計數法,除非我們把單元格格式設置成“文本型” 
哈哈,似乎找到了思路:用poi先把單元格設置成“文本型”就可以了把。 
從文檔里找到了這個方法HSSFCell.setCellType(int type),怎么看這個方法都可以設置單元格格式。 
代碼中加入cell.setCellType(HSSFCell.CELL_TYPE_STRING),還是沒有任何變化。。。 
又一次陷入無助狀態 
從google搜索了半天,找到了這篇文章 
http://javacrazyer.iteye.com/blog/894758,博主寫的非常詳細,從原理到解決方法都有了 
思路還是那樣,設置單元格格式為“文本型” 
下面直接闡述下真正的解決方法: 

1 //創建workBook 
2  HSSFWorkbook wb = new HSSFWorkbook(); 
3  //創建一個樣式 
4  HSSFCellStyle cellStyle = wb.createCellStyle(); 
5 //創建一個DataFormat對象 
6 HSSFDataFormat format = wb.createDataFormat(); 
7 //這樣才能真正的控制單元格格式,@就是指文本型,具體格式的定義還是參考上面的原文吧 
8 cellStyle.setDataFormat(format.getFormat("@")); 

10 //具體如何創建cell就省略了,最后設置單元格的格式這樣寫 

11 cell.setCellStyle(cellStyle);


當我們把web頁面上的數據導成excel形式時,有時候我們的數據需要以特定的格式呈現出來,這時候我們就需要給cell添加一些樣式規格信息。

 首先,我們了解一下excel從web頁面上導出的原理。當我們把這些數據發送到客戶端時,我們想讓客戶端程序(瀏覽器)以excel的格式讀取它,所以把mime類型設為:application/vnd.ms-excel,當excel讀取文件時會以每個cell的格式呈現數據,如果cell沒有規定的格式,則excel會以默認的格式去呈現該cell的數據。這樣就給我們提供了自定義數據格式的空間,當然我們必須使用excel支持的格式。下面就列出常用的一些格式:

1)  文本:vnd.ms-excel.numberformat:@

2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd

3)  數字:vnd.ms-excel.numberformat:#,##0.00

4)  貨幣:vnd.ms-excel.numberformat:¥#,##0.00

5)  百分比:vnd.ms-excel.numberformat: #0.00%

這些格式你也可以自定義,比如年月你可以定義為:yy-mm等等。那么知道了這些格式,怎么去把這些格式添加到cell中呢?很簡單,我們只需要把樣式添加到對應的標簽對(即閉合標簽)即可。如<td></td>,給標簽對<td></td>添加樣式,如下:


view plaincopy to clipboardprint?
<td style="vnd.ms-excel.numberformat:@">410522198402161833</td>  
<td style="vnd.ms-excel.numberformat:@">410522198402161833</td>
 

同樣,我們也可以給<div></div>添加樣式,也可以給<tr></tr>,<table></table>添加樣式,這樣就會引入一個問題,你注意到了嗎?先看如下的代碼:

 

view plaincopy to clipboardprint?
<table style=’vnd.ms-excel.numberformat:#,##0.00’>  
   <tr>  

      <td>542</td>  
       <td style=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>  
    </tr>  
</table>  
<table style=’vnd.ms-excel.numberformat:#,##0.00’>
    <tr>
        <td>542</td>
        <td style=’vnd.ms-excel.numberformat: #0.00%’>0.25</td>
    </tr>
</table>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM