java讀取excel文件

技術要點:
使用框架:jxl.jar
附上代碼:

/**
     * 讀取Excel文件
     * 
     * @param inputStream
     * @return
     */
    private List<Map> readExcel(InputStream inputStream) {

        Workbook workbook = null;// 工作簿對象
        Cell cell = null;// 單元格對象

        try {
            // 獲取Excel文件對象
            workbook = Workbook.getWorkbook(inputStream);

            // 獲取文件的指定工作表,默認的第一個
            Sheet sheet = workbook.getSheet(0);
            log.debug("導入文件的總行數---" + sheet.getRows());
            if (sheet == null || sheet.getRows() < 1) {
                return new ArrayList<Map>();
            }
            Map headMap = new HashMap();
            //從第一行開始讀取,獲取表頭文字
            for (int i = 0; i < 1; i++) {
                // 創建一個數組 , 用來存儲每一列的值
                String[] strArray = new String[sheet.getColumns()];
                //從第一列開始讀取,獲取表頭的文字
                for (int j = 1; j < strArray.length; j++) {
                    // 獲取第i行,第j列的值
                    cell = sheet.getCell(j, i);
                    strArray[j] = cell.getContents();
                    Pattern p = Pattern.compile("\\s*|\t|\r|\n");
                    Matcher m = p.matcher(strArray[j]);
                    strArray[j] = m.replaceAll("");
                    headMap.put(j, strArray[j]);
                }
            }
            // 創建一個list 用來存儲讀取的內容
            List<Map> list = new ArrayList<Map>();
            // 行數(表頭的目錄不需要,從1開始)
            for (int i = 1; i < sheet.getRows(); i++) {
                Map map = new HashMap();
                // 創建一個數組 , 用來存儲每一列的值
                String[] strArray = new String[sheet.getColumns()];
                if (sheet.getColumns() < 1) {
                    return new ArrayList<Map>();
                }
                for (int j = 1; j < strArray.length; j++) {
                    // 獲取第i行,第j列的值
                    cell = sheet.getCell(j, i);
                    strArray[j] = cell.getContents();
                    String headItem = String.valueOf(headMap.get(j));
                    map.put(TpcEnum.getHeadName(headItem), strArray[j]);
                }
                // 把剛獲取的列存入list
                list.add(map);
            }
            return list;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return new ArrayList<Map>();
        } catch (BiffException e) {
            e.printStackTrace();
            return new ArrayList<Map>();
        } catch (IOException e) {
            e.printStackTrace();
            return new ArrayList<Map>();
        }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章