1 /**
2 *
3 * TODO: POI工具类
4 * 不支持07版本
5 * @author zyl
6 * @date 2018年11月5日
7 */
8 public class POIUtils {
9
10 /**
11 *
12 * TODO: 从输入流中读取excel的数据
13 *
14 * @param in 输入流
15 * @param columnLength 需要读取excel的列的数量
16 * @param columnStart excel从哪一行开始读 0开始
17 * @param sheetPage excel sheet 0开始
18 * @return excel中对应的列的数据集合
19 */
20 public static List<String[]> getExcelData(InputStream in, int columnLength, int columnStart,int sheetPage){
21 if(in == null) return null;
22 try{
23 return getExcelData(new HSSFWorkbook(in), columnLength, columnStart,sheetPage);
24 }catch(Exception ex){
25 throw new RuntimeException("读取excel列的数据出现异常,错误信息:"+ ex);
26 }
27 }
28
29 /**
30 *
31 * TODO: 从输入流中读取excel的数据
32 *
33 * @param wb poi中excel对象
34 * @param columnLength 需要读取excel的列的数量
35 * @param columnHeader excel是否有列头
36 * @return excel中对应的列的数据集合
37 */
38 private static List<String[]> getExcelData(Workbook wb, int columnLength, int columnStart,int sheetPage){
39 if(wb== null || columnLength<= 0){
40 return null;
41 }
42 List<String[]> data= new ArrayList<String[]>();
43 Sheet sheet= wb.getSheetAt(sheetPage);
44
45 Row row= sheet.getRow(columnStart);
46 while(row != null){
47 String[] rowStringArray= new String[columnLength];
48 for(int i=0; i< columnLength; i++){
49 Cell cell= row.getCell(i);
50 if(cell != null){
51 if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC)
52 rowStringArray[i]= String.valueOf(Double.valueOf(cell.getNumericCellValue()).intValue());
53 else if(cell.getCellType() == Cell.CELL_TYPE_STRING)
54 rowStringArray[i]= String.valueOf(cell.getStringCellValue());
55 else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN)
56 rowStringArray[i]= String.valueOf(cell.getBooleanCellValue());
57 else if(cell.getCellType() == Cell.CELL_TYPE_ERROR)
58 rowStringArray[i]= String.valueOf(cell.getErrorCellValue());
59 else
60 rowStringArray[i]= String.valueOf("");
61 }else{
62 rowStringArray[i]= "";
63 }
64 }
65 data.add(rowStringArray);
66 columnStart++;
67 row= sheet.getRow(columnStart);
68 }
69 return data;
70 }
71 }