解析excel

/**
	 * 解析excel
	 * 
	 * @throws InvalidFormatException
	 * @throws IOException
	 */
	public void analysisExcel() throws InvalidFormatException, IOException {
		
		String path = "D:\\xxx.xls";
		
		InputStream ins = null;
		
		Workbook book = null;
		
		ins = new FileInputStream(path);
		
		// 将文件中的内容都加载到WorkBook中
		book = WorkbookFactory.create(ins);
		
		ins.close();
		
		// 用于存放读出的数据
		List<String[]> lineList = new LinkedList<String[]>();
		
		String[] arrs = {};
		
		// 这里的0代表excel中的sheet1
		Sheet sheet = book.getSheetAt(0);
		
		// 迭代出每行的数据
		Iterator<Row> rit = sheet.iterator();
		
		boolean flag = false;

		while (rit.hasNext()) {
			
			flag = false;
			
			Row row = rit.next();// 获取每行数据
			
			int rownum = row.getRowNum();
			
			Cell cell = null;
			
			int length = row.getLastCellNum();
			
			arrs = new String[length];
			
			for (int i = 0; i <= length; i++) {
				
				cell = row.getCell(i);
				
				if (cell != null) {
					
					String cellVal = getCellVal(cell);
					
					if (StringUtils.isNotEmpty(cellVal)) {
						
						if (!flag) {
							
							flag = true;
						}
						arrs[i] = cellVal;
					}
				}
			}
			if (flag) {
				
				lineList.add(arrs);
			}
		}

		for (String[] strs : lineList) {
			
			for (int i = 0; i < strs.length; i++) {
				
				System.out.println(strs[i]);
			}
		}
	}

	private static String getCellVal(Cell cell) {
		
		String str = "";
		// 根据单元格中数据的类型进行分析
		switch (cell.getCellType()) {
		
		case Cell.CELL_TYPE_BLANK:
			str = "";
			break;
		case Cell.CELL_TYPE_ERROR:
			str = Byte.toString(cell.getErrorCellValue());
			break;
		case Cell.CELL_TYPE_STRING:
			str = cell.getRichStringCellValue().getString();
			break;
		case Cell.CELL_TYPE_NUMERIC:
			if (DateUtil.isCellDateFormatted(cell)) {
				str = StringUtils.parseDateToString(cell.getDateCellValue());
			} else {
				str = String.valueOf(cell.getNumericCellValue());
				if (str.indexOf("E") != -1) {
					str = Long.toString((long) cell.getNumericCellValue());
				}
			}
			break;
		case Cell.CELL_TYPE_BOOLEAN:
			str = Boolean.toString(cell.getBooleanCellValue());
			break;
		case Cell.CELL_TYPE_FORMULA:
			str = cell.getCellFormula();
			break;
		default:
			str = "";
		}
		return str;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值