public class ReadExcel { public static void main(String[] args) { Workbook wb = null; Sheet sheet = null; Row row = null; String filePath = "C:\\Users\\30713\\Desktop\\sg八大領域sql\\采集源數據表\\第八領域表字段.xlsx"; wb = readExcel(filePath); if (wb != null) { try { List<List<List<Object>>> list = new ArrayList<>(); System.err.println("頁簽數量:" + wb.getNumberOfSheets()); // 循環頁簽 for (int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) { // 指定頁簽的值 sheet = wb.getSheetAt(sheetNum); // 定義存放一個頁簽中所有數據的List List<List<Object>> sheetList = new ArrayList<>(); System.err.println("行總數:" + sheet.getLastRowNum()); // 循環行 for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) { // 指定行的值 row = sheet.getRow(rowNum); // 定義存放一行數據的List List<Object> rowList = new ArrayList<>(); //下面可以獲取具體表格內容 String eng = row.getCell(2).toString(); String ch = row.getCell(4).toString(); // 循環列 //System.err.println("列總數:" + row.getLastCellNum()); for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) { Cell cell = sheet.getRow(rowNum).getCell(cellNum); rowList.add(getStringCellValue(cell)); } sheetList.add(rowList); } list.add(sheetList); } System.err.println(list.toString()); } catch (Exception e) { e.printStackTrace(); } } } //判斷文件格式 private static Workbook readExcel(String filePath){ if(filePath==null){ return null; } String extString = filePath.substring(filePath.lastIndexOf(".")); try { @SuppressWarnings("resource") InputStream is = new FileInputStream(filePath); if(".xls".equals(extString)){ return new HSSFWorkbook(is); }else if(".xlsx".equals(extString)){ return new XSSFWorkbook(is); } } catch (Exception e) { e.printStackTrace(); } return null; } @SuppressWarnings("deprecation") public static String getStringCellValue(Cell cell) { String cellvalue = ""; if (cell == null) { return ""; } switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: cellvalue = cell.getStringCellValue(); break; case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = cell.getDateCellValue(); cellvalue = sdf.format(date); } else { cellvalue = String.valueOf(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BOOLEAN: cellvalue = String.valueOf(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_BLANK: cellvalue = ""; break; default: cellvalue = ""; break; } if (cellvalue == "") { return ""; } return cellvalue; } }