Excel表格導入時時間格式出現毫秒數和時間格式,字符串格式解決方式

 Excel表格導入時時間格式出現毫秒數和時間格式,字符串格式解決方式,獲取元素Cell有個getCellType方法判斷是什麼類型再進行轉換。

Excel 將信息收集到後,通過數據上傳的方式,將數據放到數據庫中,而如果在操作的過程中沒有把excel的數據類型對應的獲取,就會報錯,下面寫了一個方法將row的每一個cell轉換成String類型, 
int type = cell.getCellType(); //獲取cell的類型,分別有 
CellType 類型 值 
CELL_TYPE_NUMERIC 數值型 0 
CELL_TYPE_STRING 字符串型 1 
CELL_TYPE_FORMULA 公式型 2 
CELL_TYPE_BLANK 空值 3 
CELL_TYPE_BOOLEAN 布爾型 4 
CELL_TYPE_ERROR 錯誤 5 
將某個Cell 設置成String row.getCell(i).setCellType(Cell.CELL_TYPE_STRING);

處理日期相對要麻煩一點,先獲取日期的樣式 
String string_type =cell.getCellStyle().getDataFormatString(); 
並且該格子得設置成數值型的, 
String ans = new SimpleDateFormat(“yyyy-MM-dd”).format(cell.getDateCellValue());

這樣ans就能獲取到String類型的日期了,不然只能獲取一個5位的數字

出現這幾種類似情況都可以解決,還有什麼問題評論一起解決,感謝!

String filePath = "C:\\Users\\gcs-7\\Desktop\\測試.xlsx";
		// 判斷是否爲excel類型文件
		if (!filePath.endsWith(".xls") && !filePath.endsWith(".xlsx")) {
			System.out.println("文件不是excel類型");
		}
		FileInputStream fis = null;
		Workbook wookbook = null;
		int lineNum = 0;
		Sheet sheet = null;
		try {
			// 獲取一個絕對地址的流
			fis = new FileInputStream(filePath);
			// 2003版本的excel,用.xls結尾, 2007版本以.xlsx
			if (filePath.endsWith(".xls")) {
				wookbook = new HSSFWorkbook(fis);// 得到2003版結尾.xls工作簿
			} else {
				wookbook = new XSSFWorkbook(fis);// 得到2007版結尾.xlsx工作簿
			}
			// 得到一個工作表
			sheet = wookbook.getSheetAt(0);
			// 獲得表頭
			Row rowHead = sheet.getRow(0);
			// 列數
			int rows = rowHead.getPhysicalNumberOfCells();
			// 行數
			lineNum = sheet.getLastRowNum();
			if (0 == lineNum) {
				System.out.println("Excel內沒有數據!");
			}
			// 獲得所有數據
			for (int i = 1; i <= lineNum; i++) {
				// 獲得第i行對象
				Row row = sheet.getRow(i);
				for (int j = 0; j < rows; j++) {
					Cell cell = row.getCell(j);
					if(cell!=null && cell.toString()!=""){
						if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
							SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
							if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {
								sdf = new SimpleDateFormat("HH:mm");
							} else {// 日期
								sdf = new SimpleDateFormat("yyyyMMdd");
							}
							Date date = cell.getDateCellValue();
							String result = sdf.format(date);
							System.out.println("毫秒數格式:"+result);
						} else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
							System.out.println("字符串格式:"+cell.getStringCellValue());
							//date=cell.getDateCellValue();
						}else if(cell.getCellStyle().getDataFormat()==HSSFDataFormat.getBuiltinFormat("yyyyMMdd")){
							SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
							sdf.parse(cell.getRichStringCellValue().getString());
							System.out.println("時間格式:"+cell.getStringCellValue());
						}
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章