java 读取excel
public static ResponseData readExcel(File file) throws Exception{
ResponseData responseData = null;
List<String> excelHeadList = new ArrayList<String>();
try {
InputStream stream = new FileInputStream(file);
Workbook wb = null;
//判断excel是03版的还是07版的
if (file.getName().toLowerCase().endsWith("xls")) {
wb = new HSSFWorkbook(stream);
} else {
wb = new XSSFWorkbook(stream);
}
Sheet sheet = wb.getSheetAt(0);
//以表头为(“ID”,“姓名”,“年龄”)的excel为例
String[] toutle = {"ID","姓名","年龄"};
int rowNum = sheet.getLastRowNum();// 行数
Row rowTitle = sheet.getRow(0);//头部列
int cellNum = rowTitle.getLastCellNum();//列数
// 此时是一个空的Excle表格或者是一个只有头的Excle表格
if (rowNum == 0 && sheet.getPhysicalNumberOfRows() == 0) {
responseData = ResponseData.getSucessResponse("上传的表格为空");
return responseData;
} else {
//将上传的excel表头内容放入excelHeadList中
for (int i = 0; i < cellNum; i++) {
if(rowTitle.getCell(i)!=null){
excelHeadList.add(rowTitle.getCell(i).toString());
}
}
for (int i = 1; i <= rowNum; i++) {
//循环Excel中的行数开始
Map<String, Object> map = new HashMap<String, Object>();
Row row = sheet.getRow(i);
if (toutle.length != cellNum) {
//判断是否多列或少列
if (toutle.length > cellNum) {
//少列
responseData = ResponseData.getErrorResponse("导入Excel数据缺少列,请确认后再导入数据。");
return responseData;
} else {
//多列
responseData = ResponseData.getErrorResponse("导入Excel数据多出列,请确认后再导入数据。");
return responseData;
}
} else {
//判断上传的表头是否和预设的表头内容一样
for (int j = 0; j <excelHeadList.size() ; j++) {
if(!excelHeadList.get(j).equals(toutle[j])){
responseData = ResponseData.getSucessResponse("表格表头数据不规范,请重试!");
return responseData;
}
}
for (int j = 0; j < cellNum; j++) {
String cellValue = "";
Cell cell = row.getCell(j);
if(cell != null){
cellValue=cell.toString();
}
map.put(toutle[j], cellValue);
}
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= "
+ entry.getValue());
}
}
}
responseData = ResponseData.getSucessResponse("上传完成!");
}catch (Exception e){
responseData = ResponseData.getSucessResponse("上传失败,请重试!");
}
return responseData;
}
posted on 2018-08-22 14:46 strideparty 阅读(157) 评论(0) 收藏 举报
浙公网安备 33010602011771号