package com.oadmin.superapp.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import com.oadmin.superapp.vo.OrderVO; public class ReadExcle { public static void main(String[] args) { try { List<OrderVO> list= readXls(new File("D://未发货订单列表20170831.xls")); System.out.println(list.get(0).getAppId()); } catch (IOException e) { e.printStackTrace(); } } public static List<OrderVO> readXls(File file) throws IOException { List<OrderVO> list = new ArrayList<OrderVO>(); try{ //XSSF和HSSF虽然在不同的包里,但却引用了同一接口Workbook,可以用下面判断 Workbook wb = null; FileInputStream fi = new FileInputStream(file); /* if (systemObjFileFileName.toLowerCase().endsWith("xls")) { }else if(systemObjFileFileName.toLowerCase().endsWith("xlsx")) { wb = new XSSFWorkbook(fi); }*/ wb = new HSSFWorkbook(fi); Sheet sheet = wb.getSheetAt(0); int rowNum = sheet.getLastRowNum()+1; //i 从1开始表示第一行为标题 不包含在数据中 for(int i=1;i<rowNum;i++){ OrderVO systemObject = new OrderVO(); Row row = sheet.getRow(i); int cellNum = row.getLastCellNum(); for(int j=0;j<cellNum;j++){ Cell cell = row.getCell(j); String cellValue = null; if(cell != null){ cell.setCellType(Cell.CELL_TYPE_STRING); cellValue = cell.getStringCellValue(); } switch(j){//通过列数来判断对应插如的字段 //数据中不应该保护ID这样的主键记录 case 0 : systemObject.setOrder(cellValue);break; case 1 : systemObject.setCompany(cellValue);break; case 2 : systemObject.setOrder_number(cellValue);break; case 3 : systemObject.setAppId(UUID.fromString(cellValue));break; case 4 : systemObject.setOrderId(UUID.fromString(cellValue));break; } } list.add(systemObject); } }catch(Exception e){ e.printStackTrace(); } return list; } }