解压zip并解析excel
<dependency>
<groupId>poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
public static ParseLicenseReturn uploadLicense(File file) { String filename = file.getName(); ParseLicenseReturn ret = new ParseLicenseReturn(); Map<String, FileInfoManageM> fileInfos = new HashMap<String, FileInfoManageM>(); List<String> esns = new ArrayList<String>(); String fileType = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase(Locale.US); // 上传的文件格式不正确 int total = 0; int failNum = 0; // 如果是zip文件 if(fileType.equals("zip")){ String desPath = TEMP_DIR + File.separator + UUID.randomUUID().toString().replaceAll("-", ""); try{ FileCommonUtils.unZipFile(file, desPath); File desFile = new File(desPath); List<File> fileList = FileCommonUtils.getSubFiles(desFile); for (File oneFile : fileList){ if (oneFile.getName().toLowerCase().endsWith(".xls") || oneFile.getName().toLowerCase().endsWith(".xlsx") ) { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { // 同时支持Excel 2003、2007 FileInputStream is = new FileInputStream(oneFile); // 文件流 /* Workbook wb = null; if(file.getName().endsWith("xls")){ //Excel 2003 wb = new HSSFWorkbook(is); }else if(file.getName().endsWith("xlsx")){ // Excel 2007/2010 wb = new XSSFWorkbook(is); }*/ Workbook workbook = WorkbookFactory.create(is); // 这种方式 Excel2003/2007/2010都是可以处理的 int sheetCount = workbook.getNumberOfSheets(); // Sheet的数量 /** * 设置当前excel中sheet的下标:0开始 */ Sheet sheet = workbook.getSheetAt(0); // 遍历第一个Sheet // 为跳过第一行目录设置count int count = 0; for (Row row : sheet) { // 跳过第一行的目录 if(count == 0){ count++; continue; } // 如果当前行没有数据,跳出循环 if(row.getCell(0)==null || row.getCell(0).toString().equals("")){ continue ; } String rowValue = ""; //将数据放到数据库 System.out.println(row.getCell(0)+".."+row.getCell(0)); //第x个位置只存放word的连接,所以将名字取出来再进行对比 if(!row.getCell(2).toString().equals("")){ String wordName = row.getCell(2).toString(); for (File wordFile : fileList){ if (wordFile.getName().equals(wordName)) { String str = ""; try { FileInputStream fis = new FileInputStream(wordFile); XWPFDocument xdoc = new XWPFDocument(fis); XWPFDocument doc = new XWPFDocument(is); XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc); String doc1 = extractor.getText(); System.out.println(doc1); fis.close(); } catch (Exception e) { e.printStackTrace(); } } } } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } finally{ } } } } catch(Exception e){ ret.setMessage(FileUploadConstant.ERROR_FILE_CONTENT_NOATCH); return ret; } finally{ FileCommonUtils.delete(desPath); } } ret.setMessage(FileUploadConstant.ERROR_FILE_CONTENT_NOATCH); return ret; }