package com.qxueyou.scc.user.util; /** * Description:ExcelÊý¾Ý¶ÁÈ¡¹¤¾ßÀ࣬POIʵÏÖ£¬¼æÈÝExcel2003£¬¼°Excel2007 **/ import java.io.File; 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.commons.lang3.StringUtils; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelReader { Workbook wb; List dataList = new ArrayList(100); public ExcelReader(File file) { try { InputStream inp = new FileInputStream(file); wb = WorkbookFactory.create(inp); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * È¡ExcelËùÓÐÊý¾Ý£¬°üº¬header * * @return List */ public List getAllData(int sheetIndex) { int columnNum = 0; Sheet sheet = wb.getSheetAt(sheetIndex); if (sheet.getRow(0) != null) { columnNum = sheet.getRow(0).getLastCellNum() - sheet.getRow(0).getFirstCellNum(); } if (columnNum > 0) { for (Row row : sheet) { String[] singleRow = new String[columnNum]; int n = 0; for (int i = 0; i < columnNum; i++) { Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK); switch (cell.getCellType()) { case Cell.CELL_TYPE_BLANK: singleRow[n] = ""; break; case Cell.CELL_TYPE_BOOLEAN: singleRow[n] = getHandlerString(Boolean.toString(cell.getBooleanCellValue())); break; // ÊýÖµ case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { singleRow[n] = getHandlerString(String.valueOf(cell.getDateCellValue())); } else { cell.setCellType(Cell.CELL_TYPE_STRING); String temp = getHandlerString(cell.getStringCellValue()); // ÅжÏÊÇ·ñ°üº¬Ð¡Êýµã£¬Èç¹û²»º¬Ð¡Êýµã£¬ÔòÒÔ×Ö·û´®¶ÁÈ¡£¬Èç¹ûº¬Ð¡Êýµã£¬Ôòת»»ÎªDoubleÀàÐ͵Ä×Ö·û´® if (temp.indexOf('.') > -1) { singleRow[n] = String.valueOf(new Double(temp)); } else { singleRow[n] = temp; } } break; case Cell.CELL_TYPE_STRING: singleRow[n] = getHandlerString(cell.getStringCellValue()); break; case Cell.CELL_TYPE_ERROR: singleRow[n] = ""; break; case Cell.CELL_TYPE_FORMULA: cell.setCellType(Cell.CELL_TYPE_STRING); String rowValue = getHandlerString(cell.getStringCellValue()); if (rowValue != null) { rowValue = rowValue.replaceAll("#N/A", ""); } singleRow[n] = rowValue; break; default: singleRow[n] = ""; break; } n++; } if ("".equals(singleRow[0])) { continue; }// Èç¹ûµÚÒ»ÐÐΪ¿Õ£¬Ìø¹ý dataList.add(singleRow); } } return dataList; } /** * ´¦Àíµ¼ÈëµÄ×Ö·û´®£¬°üÀ¨È¥³ý¿Õ¸ñµÈ·ûºÅ * @param str * @return */ private String getHandlerString(String str){ if(StringUtils.isBlank(str)){ return "" ; } return str.trim(); } /** * ·µ»ØExcel×î´óÐÐindexÖµ£¬Êµ¼ÊÐÐÊýÒª¼Ó1 * * @return */ public int getRowNum(int sheetIndex) { Sheet sheet = wb.getSheetAt(sheetIndex); return sheet.getLastRowNum(); } /** * ·µ»ØÊý¾ÝµÄÁÐÊý * * @return */ public int getColumnNum(int sheetIndex) { Sheet sheet = wb.getSheetAt(sheetIndex); Row row = sheet.getRow(0); if (row != null && row.getLastCellNum() > 0) { return row.getLastCellNum(); } return 0; } /** * »ñȡijһÐÐÊý¾Ý * * @param rowIndex * ¼ÆÊý´Ó0¿ªÊ¼£¬rowIndexΪ0´ú±íheaderÐÐ * @return */ public String[] getRowData(int sheetIndex, int rowIndex) { String[] dataArray = null; if (rowIndex > this.getColumnNum(sheetIndex)) { return dataArray; } else { dataArray = new String[this.getColumnNum(sheetIndex)]; return this.dataList.get(rowIndex); } } /** * »ñȡijһÁÐÊý¾Ý * * @param colIndex * @return */ public String[] getColumnData(int sheetIndex, int colIndex) { String[] dataArray = null; if (colIndex > this.getColumnNum(sheetIndex)) { return dataArray; } else { if (this.dataList != null && this.dataList.size() > 0) { dataArray = new String[this.getRowNum(sheetIndex) + 1]; int index = 0; for (String[] rowData : dataList) { if (rowData != null) { dataArray[index] = rowData[colIndex]; index++; } } } } return dataArray; } public static void main(String[] args) { // 03 File file = new File("d:\\test03.xls"); ExcelReader excelReader = new ExcelReader(file); List title = excelReader.getAllData(0); for (String[] tTitile : title) { for (String s : tTitile) { System.out.print(s + " "); } } // 07 file = new File("d:\\test07.xlsx"); ExcelReader excelReader1 = new ExcelReader(file); List title1 = excelReader1.getAllData(0); for (String[] tTitile : title1) { for (String s : tTitile) { System.out.print(s + " "); } } } }