需要三个包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.14</version> </dependency>
下边是代码,直接拿起用就可以,需要自己创建个类放代码,因为只把他封装成了MAP对象,所以自己对象直接get数据就可以
import org.apache.poi.ss.usermodel.*; import java.io.FileInputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; public class ExcelRead { public List<Map> ExcelReadMap(String filePath) { try { InputStream inputStream = new FileInputStream(filePath); Workbook workbook = WorkbookFactory.create(inputStream); Sheet sheet = workbook.getSheetAt(0); // 取得表头 Row rr = sheet.getRow(0); // 保存表头 String[] arrHead = new String[rr.getPhysicalNumberOfCells()]; int j=0; for(Cell ce: rr) { int roC = rr.getPhysicalNumberOfCells(); int ceC = ce.getColumnIndex(); arrHead[j]=ce.getStringCellValue(); j++; } // 构建list对象集合 List<Map> list = new ArrayList<Map>(); for (int i=1;i<sheet.getPhysicalNumberOfRows();i++) { Row row = sheet.getRow(i); Map<String,Object> map = new HashMap<String,Object>(); for(int k=0;k<row.getPhysicalNumberOfCells();k++) { // 获取行数据 Cell cell = row.getCell(k); //获取值并自己格式化 switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING:// 字符串型 map.put(arrHead[k],cell.getStringCellValue()); // System.out.println(cell.getRichStringCellValue().getString()); break; case Cell.CELL_TYPE_NUMERIC:// 数值型 if (DateUtil.isCellDateFormatted(cell)) { // 如果是date类型则 ,获取该cell的date值 Date date = cell.getDateCellValue(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String da = format.format(date); map.put(arrHead[k],da); // System.out.println(cell.getDateCellValue()); } else {// 纯数字 int number = (int)cell.getNumericCellValue(); map.put(arrHead[k],number); // System.out.println(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BLANK:// 空值 String nu = ""; map.put(arrHead[k],nu); // System.out.println(); break; } } list.add(map); } return list; // System.out.println("长度为"+list.size()); } catch (Exception e) { e.printStackTrace(); } return new ArrayList<Map>(); } }
如有错误欢迎指正,转载请注明。。