POI讀取Excel內容格式化


在用POI讀取Excel內容時,經常會遇到數據格式化的問題.

比如:數字12365會變為12365.0;字符串數字123也會變為123.0,甚至會被變為科學計數法.另外日期格式化也是一個頭疼的問題.其實最希望的方式是Excel是什么,那POI取出來就是什么,不要搞任何轉換.

網上搜羅各種格式化方式后,找到最滿意的一種:

import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;

public Object getValue(Cell cell) {
    if (cell == null)
        return "";
    //如果是日期類型(POI會把日期轉數字)
    if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
        //Check if a cell contains a date
        if (HSSFDateUtil.isCellDateFormatted(cell)) {
            Date d = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
            return new SimpleDateFormat("yyyy-MM-dd").format(d);
        }
    }
  //如果是中文類型的日期(轉為xxxx-xx-xx格式)  
// m月d日 :dataFormat=58,dataFormatString=reserved-0x1c
//yyyy年m月d日 :dataFormat=31,dataFormatString=reserved-0x1f
if (cell.getCellStyle().getDataFormat() == 58 || cell.getCellStyle().getDataFormat() == 31)
return DateUtil.date2string(cell.getDateCellValue(), DateUtil.YYYY_MM_DD);
HSSFDataFormatter df = new HSSFDataFormatter(); return df.formatCellValue(cell); }

這樣,拿到的數據就都是原來的樣子了

 


免責聲明!

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



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