主要有兩點:
1.時間從24小時制變成了12小時制;
2.時間無端端多了8小時;
原因:
1.沒有進行時間格式化好
2.時區不對;
/**
* 讀取Excel文件
*
* @param inputStream
* @return
*/
public List<Map> readExcel(InputStream inputStream) {
Workbook workbook = null;// 工作簿對象
Cell cell = null;// 單元格對象
try {
// 獲取Excel文件對象
workbook = Workbook.getWorkbook(inputStream);
// 獲取文件的指定工作表,默認的第一個
Sheet sheet = workbook.getSheet(0);
log.debug("導入文件的總行數---" + sheet.getRows());
if (sheet == null || sheet.getRows() < 1) {
return new ArrayList<Map>();
}
Map headMap = new HashMap();
// 從第一行開始讀取,獲取表頭文字
for (int i = 0; i < 1; i++) {
// 創建一個數組 , 用來存儲每一列的值
String[] strArray = new String[sheet.getColumns()];
// 從第一列開始讀取,獲取表頭的文字
for (int j = 1; j < strArray.length; j++) {
// 獲取第i行,第j列的值
cell = sheet.getCell(j, i);
strArray[j] = cell.getContents();
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(strArray[j]);
strArray[j] = m.replaceAll("");
headMap.put(j, strArray[j]);
}
}
// 創建一個list 用來存儲讀取的內容
List<Map> list = new ArrayList<Map>();
// 行數(表頭的目錄不需要,從1開始)
for (int i = 1; i < sheet.getRows(); i++) {
Map map = new HashMap();
// 創建一個數組 , 用來存儲每一列的值
String[] strArray = new String[sheet.getColumns()];
if (sheet.getColumns() < 1) {
return new ArrayList<Map>();
}
for (int j = 1; j < strArray.length; j++) {
// 獲取第i行,第j列的值
cell = sheet.getCell(j, i);
// 判斷是否是時間格式
if (cell.getType() == CellType.DATE) {
DateCell dc = (DateCell) cell;
Date date = dc.getDate();
TimeZone zone = TimeZone.getTimeZone("GMT");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(zone);
String sDate = sdf.format(date);
strArray[j] = sDate;
}else{
strArray[j] = cell.getContents();
}
String headItem = String.valueOf(headMap.get(j));
map.put(TpcEnum.getHeadName(headItem), strArray[j]);
}
// 把剛獲取的列存入list
list.add(map);
}
return list;
} catch (FileNotFoundException e) {
e.printStackTrace();
return new ArrayList<Map>();
} catch (BiffException e) {
e.printStackTrace();
return new ArrayList<Map>();
} catch (IOException e) {
e.printStackTrace();
return new ArrayList<Map>();
}
}