POI导入数据

package util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcel {
	
	public static final String OFFICE_EXCEL_2003_POSTFIX = "xls";
    public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx";
    public static final String EMPTY = "";
    public static final String POINT = ".";
    public static final String NOT_EXCEL_FILE = " : Not the Excel file!";
    public static final String PROCESSING = "Processing...";
	
    
	public static List<ArrayList<String>> readExcel(String path,int sheelNum,int startRow,int cols){
		 if (path == null || EMPTY.equals(path)) {
	            return null;
	        } else {
	            String postfix = getPostfix(path);
	            if (!EMPTY.equals(postfix)) {
	                if (OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) {
	                    return readXls(path,sheelNum,startRow,cols);
	                } else if (OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) {
	                    return readXlsx(path,sheelNum,startRow,cols);
	                }
	            } else {
	                System.out.println(path + NOT_EXCEL_FILE);
	            }
	        }
	        return null;
	}
	 /**
     * Read the Excel 2003-2007
     * @param path the path of the Excel
     * @return
     * @throws IOException
     */
    public static List<ArrayList<String>> readXls(String path,int sheelNum,int startRow,int cols) {
        System.out.println(PROCESSING + path);
        List<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
		try {
			InputStream is = new FileInputStream(path);
			HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
			    HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(sheelNum);
			    if (hssfSheet == null) {
			        return list;
			    }
			    // Read the Row
			    for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
			        HSSFRow hssfRow = hssfSheet.getRow(rowNum);
			        if (hssfRow != null) {
			        	ArrayList<String> rowList = new ArrayList<String>();
			        	for (int col = 0; col < cols; col++) {
							rowList.add(hssfRow.getCell(col).getStringCellValue());
						}
			            list.add(rowList);
			        }
			    }
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
        return list;
    }
	
	 /**
     * Read the Excel 2010
     * @param path the path of the excel file
     * @return
     * @throws IOException
     */
    public static List<ArrayList<String>> readXlsx(String path,int sheelNum,int startRow,int cols) {
        System.out.println(PROCESSING + path);
        List<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
        InputStream is;
		try {
			is = new FileInputStream(path);
			XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
	        // Read the Sheet
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(sheelNum);
            if (xssfSheet == null) {
                return list;
            }
            // Read the Row
            for (int rowNum = startRow; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
                XSSFRow xssfRow = xssfSheet.getRow(rowNum);
                if (xssfRow != null) {
                	ArrayList<String> rowList = new ArrayList<String>();
                	for (int col = 0; col < cols; col++) {
						rowList.add(xssfRow.getCell(col).getStringCellValue());
					}
                    list.add(rowList);
                }
            }
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
        return list;
    }
    /**
     * get postfix of the path
     * @param path
     * @return
     */
    private static String getPostfix(String path) {
        if (path == null || EMPTY.equals(path.trim())) {
            return EMPTY;
        }
        if (path.contains(POINT)) {
            return path.substring(path.lastIndexOf(POINT) + 1, path.length());
        }
        return EMPTY;
    }
}

  

posted @ 2015-04-30 18:17  专注、坚持  阅读(229)  评论(0编辑  收藏  举报