首页 > 代码库 > java 用 jxl poi 进行excel 解析 >>>>>>>>>>> 最爱那水货
java 用 jxl poi 进行excel 解析 >>>>>>>>>>> 最爱那水货
1 /** 2 * 解析excel文件 ,并把数据放入数组中 格式 xlsx xls 3 * @param path 从ftp上下载到本地的文件的路径 4 * @return 数据数组集合 5 */ 6 public List<String[]> readExcelPublic(String path){ 7 List<String[]> list = new ArrayList<String[]>(); 8 log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件"); 9 10 try { 11 FileInputStream is = new FileInputStream(path); //文件流 12 Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的 13 Sheet sheet = workbook.getSheetAt(0);//得到excel第一页的内容 14 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) { 15 //循环行数 16 Row row = sheet.getRow(i); 17 //获取当前行的列长度 18 int cols_length = row.getPhysicalNumberOfCells(); 19 //设置当前数组长度 5 20 String[] str = new String[cols_length]; 21 for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) { 22 Cell cell = row.getCell(j); 23 str[j] = this.getValue(cell); 24 } 25 list.add(str); 26 } 27 log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!"); 28 } catch (FileNotFoundException e) { 29 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】"); 30 e.printStackTrace(); 31 } catch (InvalidFormatException e) { 32 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】"); 33 e.printStackTrace(); 34 } catch (IOException e) { 35 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】"); 36 e.printStackTrace(); 37 } 38 return list; 39 } 40 41 42 /** 43 * 解析excel 文件<br> 44 * 格式为:xls 45 * @param path 文件的路径 46 * @return List<String[]> 47 */ 48 public List<String[]> xlsReadExcel(String path){ 49 List<String[]> list = new ArrayList<String[]>(); 50 log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件"); 51 try { 52 FileInputStream is = new FileInputStream(path); //文件流 53 HSSFWorkbook workbook = new HSSFWorkbook(is); 54 HSSFSheet sheet = workbook.getSheetAt(0);//得到excel第一页的内容 55 for (int i = 0; i < sheet.getLastRowNum(); i++) { 56 //循环行数 57 HSSFRow row = sheet.getRow(i); 58 //获取当前行的列长度 59 int cols_length = row.getLastCellNum(); 60 //设置当前数组长度 5 61 String[] str = new String[cols_length]; 62 for (int j = 0; j < row.getLastCellNum(); j++) { 63 HSSFCell cell = row.getCell(j); 64 str[j] = this.getValue(cell); 65 } 66 list.add(str); 67 log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!"); 68 } 69 } catch (FileNotFoundException e) { 70 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】"); 71 e.printStackTrace(); 72 } catch (IOException e) { 73 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】"); 74 e.printStackTrace(); 75 } 76 return list; 77 } 78 79 80 81 82 /** 83 * 解析excel 文件<br> 84 * 格式为:xlsx 85 * @param path 文件的路径 86 * @return List<String[]> 87 */ 88 public List<String[]> xlsxAnalysisExcexl(String path){ 89 List<String[]> list = new ArrayList<String[]>(); 90 log.info("开始解析"+path.substring(path.lastIndexOf("\\")+1)+"文件"); 91 try { 92 FileInputStream is = new FileInputStream(path); //文件流 93 XSSFWorkbook workbook = new XSSFWorkbook( is); 94 XSSFSheet sheet = workbook.getSheetAt(0);//得到excel第一页的内容 95 for (int i = 0; i < sheet.getLastRowNum(); i++) { 96 //循环行数 97 XSSFRow row = sheet.getRow(i); 98 //获取当前行的列长度 99 int cols_length = row.getLastCellNum();100 //设置当前数组长度 5101 String[] str = new String[cols_length];102 for (int j = 0; j < row.getLastCellNum(); j++) { 103 XSSFCell cell = row.getCell(j); 104 str[j] = this.getValue(cell);105 } 106 list.add(str);107 log.info("文件"+path.substring(path.lastIndexOf("\\")+1)+"解析完毕!");108 }109 } catch (FileNotFoundException e) {110 log.error("!!!!!!! 未找到文件!文件为: 【"+path+"】");111 e.printStackTrace();112 } catch (IOException e) {113 log.error("!!!!!!! 解析文件出错!文件为: 【"+path+"】");114 e.printStackTrace();115 }116 return list;117 }118 119 120 121 /**122 * JXL 解析excel 【只适用于 xls格式 的文件解析】 <br>123 * JXL 不支持 xlsx 文件的解析124 * @param path 文件的路径125 * @return126 */127 public List<String[]> jxlReadExcel(String path){128 List<String[]> list = new ArrayList<String[]>();129 try {130 InputStream is = new FileInputStream(path);131 jxl.Workbook rwb = jxl.Workbook.getWorkbook(is);132 jxl.Sheet sheet = rwb.getSheet(0);133 for (int i = 0; i < sheet.getRows(); i++) {134 jxl.Cell[] cell = sheet.getRow(i);135 String[] strs = new String[cell.length];136 for (int j = 0; j < cell.length; j++) {137 strs[j] = cell[j].getContents();138 }139 list.add(strs);140 }141 } catch (FileNotFoundException e) {142 e.printStackTrace();143 } catch (BiffException e) {144 e.printStackTrace();145 } catch (IndexOutOfBoundsException e) {146 e.printStackTrace();147 } catch (IOException e) {148 e.printStackTrace();149 } 150 return list;151 }152 153 154 155 156 /**157 * 根据不同的cell格式数据 来转换为string的数据158 * @param cell 单元格内容 159 * @return 160 */161 private String getValue(Cell cell) {162 int cellType = cell.getCellType(); 163 String cellValue = http://www.mamicode.com/null; 164 switch(cellType) { 165 case Cell.CELL_TYPE_STRING: //文本 166 cellValue =http://www.mamicode.com/ cell.getStringCellValue(); 167 break; 168 case Cell.CELL_TYPE_NUMERIC: //数字、日期 169 if(DateUtil.isCellDateFormatted(cell)) { 170 cellValue = http://www.mamicode.com/new SimpleDateFormat("yyyyMMdd").format(cell.getDateCellValue()); //日期型 171 } 172 else { 173 String num = String.valueOf(cell.getNumericCellValue()); //数字 174 if(num.contains("E")){175 cellValue = http://www.mamicode.com/num.substring(0,num.indexOf("E")).replaceAll("\\.", "");176 }else if(num.endsWith(".0")){177 cellValue = http://www.mamicode.com/num.split("\\.")[0];178 }else{179 cellValue =http://www.mamicode.com/ num;180 }181 } 182 break; 183 case Cell.CELL_TYPE_BOOLEAN: //布尔型 184 cellValue =http://www.mamicode.com/ String.valueOf(cell.getBooleanCellValue()); 185 break; 186 case Cell.CELL_TYPE_BLANK: //空白 187 cellValue =http://www.mamicode.com/ cell.getStringCellValue(); 188 break; 189 case Cell.CELL_TYPE_ERROR: //错误 190 cellValuehttp://www.mamicode.com/= ""; 191 break; 192 case Cell.CELL_TYPE_FORMULA: //公式 193 cellValuehttp://www.mamicode.com/= ""; 194 break; 195 default: 196 cellValuehttp://www.mamicode.com/= ""; 197 198 }199 return cellValue;200 }201 202 203 /**204 * 转换类型 <br>205 * 支持xls 格式的excel文件206 * @param hssfCell 207 * @return208 */209 @SuppressWarnings("static-access")210 private String getValue(HSSFCell hssfCell){ 211 if(hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN){ 212 return String.valueOf( hssfCell.getBooleanCellValue()); 213 }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC){214 String num = String.valueOf( hssfCell.getNumericCellValue());215 if(num.contains("E")){//科学计数法 去掉. 和E及E后面的216 return num.substring(0,num.indexOf("E")).replaceAll("\\.", "");217 }else if(num.endsWith(".0")){// 自动转成 .0的,去掉.0218 return num.split("\\.")[0];219 }else{220 return num;221 }222 }else{ 223 return String.valueOf( hssfCell.getStringCellValue()); 224 } 225 } 226 227 228 /**229 * 转换类型 <br>230 * 支持 xlsx 格式的excel文件231 * @param xssfCell232 * @return233 */234 @SuppressWarnings("static-access") 235 private String getValue(XSSFCell xssfCell){ 236 if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){ 237 return String.valueOf( xssfCell.getBooleanCellValue()); 238 }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){ 239 String num = String.valueOf( xssfCell.getNumericCellValue());240 if(num.contains("E")){//科学计数法 去掉. 和E及E后面的241 return num.substring(0,num.indexOf("E")).replaceAll("\\.", "");242 }else if(num.endsWith(".0")){// 自动转成 .0的,去掉.0243 return num.split("\\.")[0];244 }else{245 return num;246 }247 }else{ 248 return String.valueOf( xssfCell.getStringCellValue()); 249 } 250 } 251
java 用 jxl poi 进行excel 解析 >>>>>>>>>>> 最爱那水货
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。