做過很多次導出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("@"));
9
10 //具體如何創建cell就省略了,最后設置單元格的格式這樣寫
11 cell.setCellStyle(cellStyle);
原文地址: