public static void readUserInfo() throws InvalidFormatException, IOException { String[] titles = { "收費編號", "收費性質(zhì)", "姓名", "家庭住址", "工作單位", "電話", "手機", "小區(qū)樓號", "單元號", "樓層", "房間號", "建筑面積(㎡)", "面積依據(jù)", "A面積", "A超", "A輕體", "B面積", "B超", "B輕體", "用戶編號", "所屬樓前表表號" }; //用來存儲標(biāo)題和順序的map,key為標(biāo)題,value為順序號 Map<String, Integer> titleMap = new HashMap<String, Integer>(); //將既定順序?qū)懭雖ap for (int i=0 ; i<titles.length; i++) { titleMap.put(titles[i], i); } Workbook wb = WorkbookFactory.create(new File("e:/test/userinfo.xls")); for (int numSheet = 0; numSheet < wb.getNumberOfSheets(); numSheet++) { Sheet xSheet = wb.getSheetAt(numSheet); if (xSheet == null) { continue; } // 獲取第一行的標(biāo)題內(nèi)容 Row tRow = xSheet.getRow(0); //存儲標(biāo)題順序的數(shù)組 Integer[] titleSort = new Integer[tRow.getLastCellNum()]; //循環(huán)標(biāo)題 for (int titleNum = 0; titleNum < tRow.getLastCellNum(); titleNum++) { Cell tCell = tRow.getCell(titleNum); String title = ""; if (tCell == null || "".equals(tCell)) { } else if (tCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {// 布爾類型處理 // logger.info(xCell.getBooleanCellValue()); } else if (tCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {// 數(shù)值類型處理 title = doubleToString(tCell.getNumericCellValue()); } else {// 其他類型處理 title = tCell.getStringCellValue(); } //通過獲取的標(biāo)題,從map中讀取順訊號,寫入保存標(biāo)題順序號的數(shù)組 Integer ts = titleMap.get(title); if (ts != null) { titleSort[titleNum] = ts; } } // 循環(huán)行Row for (int rowNum = 1; rowNum < xSheet.getLastRowNum() + 1; rowNum++) { Row xRow = xSheet.getRow(rowNum); if (xRow == null) { continue; } // 循環(huán)列Cell String[] v = new String[titleSort.length]; for (int cellNum = 0; cellNum < titleSort.length; cellNum++) { Cell xCell = xRow.getCell(cellNum); String value = ""; if (xCell == null || "".equals(xCell)) { } else if (xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {// 布爾類型處理 logger.info(xCell.getBooleanCellValue()); } else if (xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {// 數(shù)值類型處理 value = doubleToString(xCell.getNumericCellValue()); } else {// 其他類型處理 value = xCell.getStringCellValue(); } //按照標(biāo)題順序的編號來存儲每一行記錄 v[titleSort[cellNum]] = value; // logger.info("v[" + titleSort[cellNum] + "] = " + v[titleSort[cellNum]]); } //循環(huán)結(jié)果數(shù)組,獲取的與既定順序相同 for (int i = 0; i < v.length; i++) { logger.info(v[i]); } } } } |