<!--xlsx和xls文件pom依赖-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
package com.wugui.datax.admin.util;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ExcelUtil {
public static void main(String[] args) {
String filePath = "E:\\wendang\\data_civil_villageallowance_0.xls";
List<Map<String,String>> list = getExcel(filePath);
for (Map<String,String> map : list) {
for (Map.Entry<String,String> entry : map.entrySet()) {
System.out.print(entry.getKey()+":"+entry.getValue()+",");
}
}
}
public static Workbook readExcel(String filePath){
Workbook wb = null;
if(filePath==null){
return null;
}
String extString = filePath.substring(filePath.lastIndexOf("."));
InputStream is = null;
try {
is = new FileInputStream(filePath);
if(".xls".equals(extString)){
return wb = new HSSFWorkbook(is);
}else if(".xlsx".equals(extString)){
return wb = new XSSFWorkbook(is);
}else{
return wb = null;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return wb;
}
public static Object getCellFormatValue(Cell cell){
Object cellValue = null;
if(cell!=null){
switch(cell.getCellType()){
case Cell.CELL_TYPE_NUMERIC:{
Double value = cell.getNumericCellValue();
BigDecimal bd1 = new BigDecimal(Double.toString(value));
cellValue = bd1.toPlainString().replaceAll("0+?$", "").replaceAll("[.]$", "");
break;
}
case Cell.CELL_TYPE_FORMULA:{
if(DateUtil.isCellDateFormatted(cell)){
cellValue = cell.getDateCellValue();
}else{
cellValue = String.valueOf(cell.getNumericCellValue());
}
break;
}
case Cell.CELL_TYPE_STRING:{
cellValue = cell.getRichStringCellValue().getString();
break;
}
default:
cellValue = "";
}
}else{
cellValue = "";
}
return cellValue;
}
public static List<Map<String,String>> getExcel(String filePath) {
Workbook wb =null;
Sheet sheet = null;
Row row = null;
List<Map<String,String>> list = null;
String cellData = null;
wb = readExcel(filePath);
if(wb != null){
list = new ArrayList<Map<String,String>>();
sheet = wb.getSheetAt(0);
int rowNum = sheet.getPhysicalNumberOfRows();
row = sheet.getRow(0);
int column = row.getPhysicalNumberOfCells();
ArrayList<String> header = new ArrayList<>();
Row sheetRow = sheet.getRow(0);
for (int j=0;j<column;j++){
cellData = (String) getCellFormatValue(sheetRow.getCell(j));
header.add(cellData);
}
for (int i = 0; i< rowNum; i++) {
Map<String,String> map = new LinkedHashMap<>();
row = sheet.getRow(i);
if(row !=null){
for (int j=0;j<column;j++){
cellData = (String) getCellFormatValue(row.getCell(j));
map.put(header.get(j), cellData);
}
}else{
break;
}
list.add(map);
}
}
return list;
}
}