首先需要引入以下jar包
如果使用maven,需要添加两个依赖
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15-beta2</version>
</dependency>
</dependencies>
excel分为两种后缀,一是xls,二是xlsx。
首先针对xls格式的excel进行解析:
public List<String[]> readExcel(File file){
List<String[]> list = new ArrayList<>();
try {
HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(file));
for (int i = 0; i < hw.getNumberOfSheets(); i++) {
HSSFSheet hs = hw.getSheetAt(i);
if(hs.getLastRowNum() == 0)
continue;
for (int j = 0; j <= hs.getLastRowNum(); j++) {//
HSSFRow row = hs.getRow(j);
String[] array = new String[row.getLastCellNum()];
for (int k = 0; k < row.getLastCellNum(); k++) {
HSSFCell cell = row.getCell(k);
array[k] = this.getValue(cell);
}
list.add(array);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
private String getValue(HSSFCell cell){
String value;
CellType type = cell.getCellTypeEnum();
switch (type) {
case STRING:
value = cell.getStringCellValue();
break;
case BLANK:
value = "";
break;
case BOOLEAN:
value = cell.getBooleanCellValue() + "";
break;
case NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case FORMULA:
value = cell.getCellFormula();
break;
case ERROR:
value = "非法字符";
break;
default:
value = "";
break;
}
return value;
}
对于xlsx格式的excel,与上者的区别在于将HSSF***换成XSSF***,样例如下:
public List<String[]> readExcel(File file){
List<String[]> list = new ArrayList<>();
try {
XSSFWorkbook xw = new XSSFWorkbook(new FileInputStream(file));
for (int i = 0; i < xw.getNumberOfSheets(); i++) {
XSSFSheet xs = xw.getSheetAt(i);
if(xs.getLastRowNum() == 0)
continue;
for (int j = 0; j <= xs.getLastRowNum(); j++) {
XSSFRow row = xs.getRow(j);
String[] array = new String[row.getLastCellNum()];
for (int k = 0; k <= row.getLastCellNum(); k++) {
XSSFCell cell = row.getCell(k);
if(cell == null)
continue;
array[k] = this.getValue(cell);
}
list.add(array);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
private String getValue(XSSFCell cell){
String value;
CellType type = cell.getCellTypeEnum();
switch (type) {
case STRING:
value = cell.getStringCellValue();
break;
case BLANK:
value = "";
break;
case BOOLEAN:
value = cell.getBooleanCellValue() + "";
break;
case NUMERIC:
value = cell.getNumericCellValue() + "";
break;
case FORMULA:
value = cell.getCellFormula();
break;
case ERROR:
value = "非法字符";
break;
default:
value = "";
break;
}
return value;
}