分享一篇利用poi 写的将excel转化为map的方法

来源:互联网 发布:淘宝申请退货在哪里 编辑:程序博客网 时间:2024/06/18 11:49
public Map<Integer,Map<Integer,List<String>>> getExcel(POIFSFileSSystem  in){
Map<Integer,Map<Integer,List<String>>> map=new HashMap<Integer,Map<Integer,List<String>>> ();
Map<Integer,List<String>> sheetMap=null;
HSSFWorkbook book=null;
book=new HSSFWorkbook(in);


int sheetSize=workbook.getNumberOfSheets();
for(int i=0;i<sheetSize;i++){
sheetMap=new HashMap<Integer,List<String>>();
HSSFSheet sheet=book.getSheetAt(i);
int rows=sheet.getPhysicalNumberOfrRows();
if(row>0){
for(int j=0;j<rows;j++){
list=new ArrayList<String>();
HSSFRow row=sheet.getRow(j);
if(row!=null){
int cells=row.getLastCellNum();
for(int k=0;k<cells;k++){
HSSFCell cell=row.getCell(k);
String value="";
switch(cell.getCellType){
case HSSFCell.CELL_TYPE.NUMBERIC;
if(HSSFDateUtil.isCellDateFormatted){
value=HSSFDateUtil.getJavaDate(cell.getNumbericCellValue()).toString();
}
else{
value=String.valueOf(cell.getNumbericCellValue());
}
if(value.matchs("^((\\d+\\.?\\d)[Ee]{1}(\\d)){1}quot;")){
DecimalFormat df=new DecimalFormat("#.##");
value=df.format(Double.parseDouble(value));
}
break;
case HSSFCell.CELL_TYPE_STRING:
value=cell.getRichStringCellValue().toString().trim();
break;
case HSSFCell.CELL_TYPE_FORMULA :
value=String.valueOf(cell.getNumbericCellValue());
if(value.equals("NaN")){
value=cell.getRichStringCellValue().toString();
}
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
value=""+cell.getBooleanCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
value="";
break;
case HSSFCell.CELL_TYPE_ERROR:
value="";
break;
default:
value=cell.getRichStringCellValue().toString().trim();
break;
}
}
list.add(value);
}
if(!isAllNullByList(list)){
sheetMap.put(j,list);
}
}
}
}
map.put(i,sheetMap);
}
return map;
}
0 0
原创粉丝点击