需要的jar包
poi-3.13.jar
poi-ooxml-3.13.jar
poi-ooxml-schemas-3.13.jar
poi-scratchpad-3.9.jar
工具类1
package com.test.poi;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;import org.apache.poi.hssf.usermodel.HSSFCell;
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.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;/*** 两种处理方式 xlsx/xls* @author zhaowanli**/
public class ExcelUtilReader {public static String[][] getExcelData(File file){if(file == null) return null;String name = file.getName();name = name.substring(name.lastIndexOf(".")+1);InputStream is = null;try {is = new FileInputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}if("XLSX".equalsIgnoreCase(name)){return getExcelDateAF2007(is);}else if("XLS".equalsIgnoreCase(name)){return getExcelDateBF2007(is);}else{try {throw new Exception("文件格式不正确");} catch (Exception e) {e.printStackTrace();}}return null;}//xls 2007 之前版本public static String[][] getExcelDateBF2007(InputStream inputStream) {String[][] data = null;HSSFWorkbook hssfwb = null;try {hssfwb = new HSSFWorkbook(inputStream);HSSFSheet hssfSheet = hssfwb.getSheetAt(0);data = new String[hssfSheet.getLastRowNum()+1][];int headerColNum = 0;for(int i = 0; i<=hssfSheet.getLastRowNum();i++){HSSFRow hssfRow = hssfSheet.getRow(i);if(i == 0 ){headerColNum = hssfRow.getLastCellNum();}data[i] = new String[headerColNum];for(int j = 0;j<hssfRow.getLastCellNum();j++){HSSFCell hssfCell = hssfRow.getCell(j);Object value = getHSSFCellValue(hssfCell);data[i][j] = value != null?String.valueOf(value): null;}}} catch (IOException e) {e.printStackTrace();}finally{try {if(hssfwb != null){hssfwb.close();}if(inputStream != null){inputStream.close();}} catch (IOException e) {e.printStackTrace();}}return data;}public static Object getHSSFCellValue(HSSFCell hssfCell){if(hssfCell == null) return null;Object value = null;switch(hssfCell.getCellType()){case Cell.CELL_TYPE_NUMERIC : //数值 0value = hssfCell.getNumericCellValue();break;case Cell.CELL_TYPE_STRING : //字符串 1value = hssfCell.getStringCellValue();break;case Cell.CELL_TYPE_FORMULA : //公式 2value = hssfCell.getStringCellValue();break;case Cell.CELL_TYPE_BLANK : //空值 3value = null;break;case Cell.CELL_TYPE_BOOLEAN : //布尔 4value = hssfCell.getBooleanCellValue();break;case Cell.CELL_TYPE_ERROR : //错误 5value = hssfCell.getErrorCellValue();break;default :value = hssfCell.getStringCellValue();}return value;}//xlsx 2007 之后版本public static String[][] getExcelDateAF2007(InputStream inputStream) {String[][] data = null;XSSFWorkbook xssfwb = null;try {xssfwb = new XSSFWorkbook(inputStream);XSSFSheet xssfSheet = xssfwb.getSheetAt(0);data = new String[xssfSheet.getLastRowNum()+1][];int headerColNum = 0;for(int i = 0; i<=xssfSheet.getLastRowNum();i++){XSSFRow xssfRow = xssfSheet.getRow(i);if(i == 0 ){headerColNum = xssfRow.getLastCellNum();}if(xssfRow == null ){data[i] = new String[0];continue;}data[i] = new String[headerColNum];for(int j = 0;j<xssfRow.getLastCellNum();j++){XSSFCell xssfCell = xssfRow.getCell(j);Object value = getXSSFCellValue(xssfCell);data[i][j] = value != null?String.valueOf(value): null;}}} catch (IOException e) {e.printStackTrace();}finally{try {if(xssfwb != null){xssfwb.close();}if(inputStream != null){inputStream.close();}} catch (IOException e) {e.printStackTrace();}}return data;}public static Object getXSSFCellValue(XSSFCell xssfCell){if(xssfCell == null) return null;Object value = null;switch(xssfCell.getCellType()){case Cell.CELL_TYPE_NUMERIC : //数值 0value = xssfCell.getNumericCellValue();break;case Cell.CELL_TYPE_STRING : //字符串 1value = xssfCell.getStringCellValue();break;case Cell.CELL_TYPE_FORMULA : //公式 2value = xssfCell.getStringCellValue();break;case Cell.CELL_TYPE_BLANK : //空值 3value = null;break;case Cell.CELL_TYPE_BOOLEAN : //布尔 4value = xssfCell.getBooleanCellValue();break;case Cell.CELL_TYPE_ERROR : //错误 5value = xssfCell.getErrorCellValue();break;default :value = xssfCell.getStringCellValue();}return value;}}
工具类2
package com.test.poi;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;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 org.apache.poi.xssf.usermodel.XSSFWorkbook;/*** 加强版: xlsx/xls 合并成一种处理方式* @author zhaowanli**/
public class ExcelUtilReader2 {public static SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");public static String[][] getExcelData(File file){if(file == null) return null;String name = file.getName();name = name.substring(name.lastIndexOf(".")+1);InputStream is = null;Workbook workbook = null;String[][] data = null;try {is = new FileInputStream(file);if("XLSX".equalsIgnoreCase(name)){workbook = new XSSFWorkbook(is);data = getExcelDate(workbook);}else if("XLS".equalsIgnoreCase(name)){workbook = new HSSFWorkbook(is);data = getExcelDate(workbook);}else{try {throw new Exception("文件格式不正确");} catch (Exception e) {e.printStackTrace();}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(workbook != null){workbook.close();}if(is != null){is.close();}} catch (IOException e) {e.printStackTrace();}}return data;}public static String[][] getExcelDate(Workbook workbook){String[][] data = null;Sheet sheet = workbook.getSheetAt(0);data = new String[sheet.getLastRowNum()+1][];int headerColNum = 0;for(int i = 0;i<=sheet.getLastRowNum();i++){Row row = sheet.getRow(i);if(i == 0 ){headerColNum = row.getLastCellNum();}if(row == null ){data[i] = new String[0];continue;}data[i] = new String[headerColNum];for(int j =0;j<row.getLastCellNum();j++){Cell cell = row.getCell(j);Object value = getCellValue(cell);data[i][j] = value!=null?String.valueOf(value):null;}}return data;}public static Object getCellValue(Cell cell){if(cell == null) return null;Object value = null;switch(cell.getCellType()){case Cell.CELL_TYPE_NUMERIC :value = cell.getNumericCellValue();break;case Cell.CELL_TYPE_STRING:value = cell.getStringCellValue();break;case Cell.CELL_TYPE_FORMULA : //公式 2value = cell.getStringCellValue();break;case Cell.CELL_TYPE_BLANK : //空值 3value = null;break;case Cell.CELL_TYPE_BOOLEAN : //布尔 4value = cell.getBooleanCellValue();break;case Cell.CELL_TYPE_ERROR : //错误 5value = cell.getErrorCellValue();break;default :value = cell.getStringCellValue();}return value;}}