JAVA Excel導入數據,存在數字類型、日期類型格式問題解決

數字類型:

java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell

產生原因:excel表格中的數據如果是純數字,excel會將該單元格變成number類型,而java後端接收的爲string類型,所以報錯

解決方法:在讀取數據前設置cell的type

public static void readExcel() throws IOException, InvalidFormatException {
        Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH2));
    System.out.println("sheets" + workbook.getNumberOfSheets());
    //獲取一張表
    Sheet sheet = workbook.getSheetAt(0);
    for (Row row : sheet) {
        int index = 0;
        for (Cell cell : row) {
            //讀取數據前設置單元格類型
            cell.setCellType(CellType.STRING);
            String value = cell.getStringCellValue();
            System.out.print("value:" + value + " ");
            index++;
        }
        System.out.println();
    }
}

也可使用

cell.setCellType(CellType.STRING);
String value = cell.getRichStringCellValue().getString();

兩者區別

getStringCellValue()返回一個普通的舊式Java字符串

getRichStringCellValue()返回XSSFRichTextString的類型。

您可能只需要使用getStringCellValue(),除非你是做一些像複製A S preadsheet並希望保留任何格式。如果是這樣的情況下,由getRichStringCellValue(返回的XSSRichTextString對象)將包含像任何格式的信息粗體斜體的。

 

日期類型:

產生原因:excel表格中如果數據是日期形式,那麼轉到後端發現變成了數字類型的日期(與常規下的日期一致)

解決方法:把數值轉換成Java的時間類型,HSSFDateUtil是POI包下的一個類,使用getJavaDate方法把Double類型轉換成Java日期類型

Date date = HSSFDateUtil.getJavaDate(Double.parseDouble(str));

 

發佈了31 篇原創文章 · 獲贊 18 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章