一、准備jar包
1.poi.jar 讀取xls格式的Excel 下載地址:https://mvnrepository.com/artifact/org.apache.poi/poi
2.poi-ooxml.jar 讀取xlsx格式的Exce 下載地址:https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
3.poi-ooxml-schemas.jar 下載地址:https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas
4.xmlbeans.jar 下載地址:https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans
注意:各位jar包的版本需要匹配,否則會因為版本沖突問題報錯。我這里使用的jar包版本分別為:poi-3.14.jar、poi-ooxml-3.14.jar、poi-ooxml-schemas-3.14.jar、xmlbeans-2.6.0.jar
二、主要API
1.import org.apache.poi.ss.usermodel.Workbook,對應Excel文檔;
2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,對應xls格式的Excel文檔;
3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,對應xlsx格式的Excel文檔;
4.import org.apache.poi.ss.usermodel.Sheet,對應Excel文檔中的一個sheet;
5.import org.apache.poi.ss.usermodel.Row,對應一個sheet中的一行;
6.import org.apache.poi.ss.usermodel.Cell,對應一個單元格。
三、測試代碼如下:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.xssf.usermodel.XSSFWorkbook; public class ExcelTest { public static void main(String[] args) throws Exception { String fileName = "E://abc.xlsx"; readExcel(fileName); } private static void readExcel(String fileName) { Workbook workbook = null; Row row = null; //獲取Excel文檔 workbook = getWorkbook(fileName); //獲取Excel文檔的第一個sheet頁 Sheet sheet = workbook.getSheetAt(0); //獲取文檔中已保存數據的行數 int rowNum = sheet.getPhysicalNumberOfRows(); //獲取第一行 row = sheet.getRow(0); //獲取當前行已保存數據的最大列數 int colnum = row.getPhysicalNumberOfCells(); for (int i = 0; i < rowNum; i++) { row = sheet.getRow(i); if (null != row) { for (int j = 0; j < colnum; j++) { Cell cell = row.getCell(j); System.out.println(getValueFromCell(cell)); } } } } private static Workbook getWorkbook(String fileName) {//根據后綴獲取Excel表格 Workbook workbook = null; String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); InputStream in = null; try { in = new FileInputStream(fileName); if ("xls".equals(suffix)) { workbook = new HSSFWorkbook(in); } else if ("xlsx".equals(suffix)) { workbook = new XSSFWorkbook(in); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return workbook; } private static Object getValueFromCell(Cell cell) {//獲取單元格的值 Object value = null; if (null == cell) { return ""; } //判斷cell類型 switch(cell.getCellType()){ case Cell.CELL_TYPE_NUMERIC:{ value = String.valueOf(cell.getNumericCellValue()); break; } case Cell.CELL_TYPE_FORMULA:{ //判斷cell是否為日期格式 if(DateUtil.isCellDateFormatted(cell)){ //轉換為日期格式YYYY-mm-dd value = cell.getDateCellValue(); }else{ //數字 value = String.valueOf(cell.getNumericCellValue()); } break; } case Cell.CELL_TYPE_STRING:{ value = cell.getRichStringCellValue().getString(); break; } default: value = ""; } return value; } }
四、Execl文檔數據及打印結果