我用poi实现
doImport(String url) throws Exception{
FileInputStream file=new FileInputStream(url);//获取excel文件
HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
HSSFSheet hssfsheet = hssfworkbook.getSheetAt(0);//第一个工作表
Map<String, Object> map=new HashMap<String, Object>();
StringBuffer errorMessage=new StringBuffer();//错误信息
StringBuffer wornMessage=new StringBuffer();//警告信息
String str="";
//遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
ArrayList<MetadataPO> list=new ArrayList<MetadataPO>();//创建List 集合
MetadataPO mePo = null;
//列坐标
Row row=null;
for(int j=1;j<hssfsheet.getPhysicalNumberOfRows();j++){
int t=j+1;//行坐标
//行坐标
int k=0;
mePo=new MetadataPO();
row = hssfsheet.getRow(j);
if(row==null){
wornMessage.append("提示:\n"+t+" 行没有数据。\n");
break;
}
/** *//**将EXCEL中的第 j 行,第一列的值插入到实例中*/
//获取第一行第一列
//1判断元数据名称
if(row.getCell(k)==null){
errorMessage.append("错误提示:元数据名称不能为空 \n"+"错误:("+t+"行,"+1+"列)\n");
break;
}else{
//设置元数据名称,取消前后的空格
mePo.setName(row.getCell(k).getStringCellValue().trim());
}
k++;
//2元数据的中文名称
if(row.getCell(k).getStringCellValue().equals("")||row.getCell(k).getStringCellValue()==""||"null".equals(row.getCell(k).getStringCellValue())){
errorMessage.append("错误提示:元数据中文名称不能为空 \n"+"错误:("+t+"行,"+2+"列)\n");
break;
}else{
mePo.setDisplaylabelZh(row.getCell(k).getStringCellValue().trim());
}
………………………N 行对数据的判断……………………………
list.add(mePo);
}
int z=hssfsheet.getPhysicalNumberOfRows();
int nextLine=list.size()+1;
if(list.size()<z-1){
errorMessage.append("导入提示:\n"+"成功导入"+list.size()+"条数据,请根据提示检查第:"+nextLine+"行数据");
}else{
errorMessage.append("导入提示:\n"+"成功导入"+list.size()+"条数据");
}
map.put("dataList", list);
map.put("wornMessage", wornMessage);
map.put("errorMessage", errorMessage);
return map;
}