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();
}