Java--Excel操作
1 public static List<Info> readXml(String fileName, Map<String, Fuck> pcMap) throws Exception{ 2 boolean isE2007 = false; //判断是否是excel2007格式 3 if(fileName.endsWith("xlsx")) 4 isE2007 = true; 5 try { 6 InputStream input = new FileInputStream(fileName); //建立输入流 7 Workbook wb = null; 8 //根据文件格式(2003或者2007)来初始化 9 if(isE2007) { 10 wb = new XSSFWorkbook(input); 11 } else { 12 wb = new HSSFWorkbook(input); 13 } 14 Sheet sheet = wb.getSheetAt(0); //获得第一个表单 15 Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器 16 17 18 //初始化列标 19 Map<String, Integer> map = new HashMap<String, Integer>(); 20 if(rows.hasNext()) { 21 Row row = rows.next(); 22 Iterator<Cell> cells = row.cellIterator(); 23 int i = 0; 24 while(cells.hasNext()) { 25 Cell cell = cells.next(); 26 if(map.containsKey(cell.toString())) { 27 continue ; 28 } 29 map.put(cell.toString(), i++); 30 } 31 } 32 // for(Map.Entry<String, Integer> set : map.entrySet()) { 33 // System.out.println(set.getKey() + " " + set.getValue()); 34 // } 35 36 37 //取数据 38 List<Info> dataList = new ArrayList<Info>(); 39 while (rows.hasNext()) { 40 Row row = rows.next(); //获得行数据 41 // System.out.println("Row #" + row.getRowNum()); //获得行号从0开始 42 Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器 43 44 String msg = ""; 45 if(cells.hasNext()) { 46 Cell cell = cells.next(); 47 cell.setCellType(Cell.CELL_TYPE_STRING); 48 Info info = new Info(); 49 50 Cell org_noCell = row.getCell(map.get("美国编号")); 51 org_noCell.setCellType(Cell.CELL_TYPE_STRING); 52 info.setOrg_no(org_noCell.toString()); 53 54 Cell org_nameCell = row.getCell(map.get("餐厅名字")); 55 org_nameCell.setCellType(Cell.CELL_TYPE_STRING); 56 info.setOrg_name(org_nameCell.toString()); 57 58 Cell szcsCell = row.getCell(map.get("城市")); 59 szcsCell.setCellType(Cell.CELL_TYPE_STRING); 60 info.setSzcs(szcsCell.toString()); 61 62 Cell addrCell = row.getCell(map.get("地址")); 63 addrCell.setCellType(Cell.CELL_TYPE_STRING); 64 info.setAddr(addrCell.toString()); 65 66 Cell telCell = row.getCell(map.get("电话")); 67 telCell.setCellType(Cell.CELL_TYPE_STRING); 68 info.setTel(telCell.toString()); 69 70 Cell taxcodeCell = row.getCell(map.get("对应纳税号")); 71 taxcodeCell.setCellType(Cell.CELL_TYPE_STRING); 72 info.setTaxcode(taxcodeCell.toString()); 73 74 msg = org_noCell.toString() + org_nameCell + szcsCell + addrCell + telCell + taxcodeCell; 75 if("".equals(msg.trim())) { 76 continue ; 77 } 78 if(info != null) { 79 if(pcMap.containsKey(taxcodeCell.toString())) { 80 Fuck fuck = pcMap.get(taxcodeCell.toString()); 81 info.setPayee(info.getOrg_no()); 82 info.setChecker(fuck.getChecker()); 83 } 84 dataList.add(info); 85 } 86 } 87 } 88 return dataList; 89 } catch (IOException ex) { 90 ex.printStackTrace(); 91 throw new Exception("请参考模板并选择正确的文件!"); 92 } 93 }