java利用poi解析excel文件

时间:2024-08-29 20:07:32

首先需要引入以下jar包

java利用poi解析excel文件

如果使用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;
}