java poi 读取 Excel xlsx和xls文件

private static Map<String,Object> readExcel() {
String filename = "B:\exceltest\template.xlsx";
Map<String, Object> map=new HashMap<String, Object>();
FileInputStream fis = null;
try {
fis = new FileInputStream(filename);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
// 读取Excel
Workbook wb = null;
try {
String[] fileStr=filename.split("\.");
if (fileStr[1].equals("xlsx")) {
wb = new XSSFWorkbook(fis);
} else if(fileStr[1].equals("xls")){
wb = new HSSFWorkbook(fis);
}else {
throw new Exception("不是excel文件!");
}

// 使用wb。getNumberOfSheets获得sheet数目。。
// 获取sheet数目
Sheet sheet = wb.getSheetAt(0);
Row row = null;
int lastRowNum = sheet.getLastRowNum();
// 循环读取
StringBuilder sb=new StringBuilder("");
for (int i = 0; i <= lastRowNum; i++) {

row = sheet.getRow(i);
if (row != null) {
if(i==0) {
String value=getCellValue(row.getCell(0));
map.put("tableName", value.substring(value.indexOf(":")+1));
}else if(i==1) {
String value=getCellValue(row.getCell(0));
map.put("buttonStyle", value.substring(value.indexOf(":")+1));
}else if(i==2){
String value=getCellValue(row.getCell(0));
map.put("i18nPrefix", value.substring(value.indexOf(":")+1));
}else {
if(i==3) continue;
int j;
// 获取每一列的值
for (j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
String value=getCellValue(cell);
if(value.equals(" ")&&j==0) {
break;
}
sb.append(value).append("|");
}
if(j==0) break;
sb.append(" ");
}
}
}

sb.setLength(sb.length()-1);
map.put("properties", sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
wb.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}

private static String getCellValue(Cell cell) {
Object result = "";
if (cell != null) {
switch (cell.getCellTypeEnum()) {
case STRING:
result = cell.getStringCellValue();
break;
case NUMERIC:
result = cell.getNumericCellValue();
break;
case BOOLEAN:
result = cell.getBooleanCellValue();
break;
case FORMULA:
result = cell.getCellFormula();
break;
case ERROR:
result = cell.getErrorCellValue();
break;
case BLANK:
result = " ";
break;
default:
break;
}
}
return result.toString();
}

PS:使用的maven

poi jar包:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>

原文地址:https://www.cnblogs.com/yuezeyuan/p/8036185.html