Java poi读取Execl数据

       最近工作中用到Java读取Execl中的数据,相比于txt,csv等,Execl显得有点复杂,在这里记录下来,记性不好怕忘记,这里主要用到的是poi这种方式。

      项目中用到的Jar包在这就不上传了,详见截图吧

    Execl因版本不同有xlsx和xls格式,对此要分开处理,其程序的主要代码如下:
 

try {
			InputStream in = new FileInputStream(filePath);
			type = filename.substring(filename.lastIndexOf(".") + 1).trim();//取得文件后缀名
			Workbook wb = null;
			if ("xlsx".equals(type)) {
				wb = new XSSFWorkbook(in);// Excel 2007
			} else if ("xls".equals(type)) {
				wb = (Workbook) new HSSFWorkbook(in);// Excel 2003
			}
			Sheet sheet = wb.getSheetAt(0);// 获取文件的第一个工作表
			Row row = null;
			Cell cell = null;
			int totalRows = sheet.getPhysicalNumberOfRows();// 总行数
			int totalCells = sheet.getRow(0).getPhysicalNumberOfCells();// 总列数
			FormulaEvaluator evaluator = wb.getCreationHelper()
					.createFormulaEvaluator();
			for (int i = 1; i < totalRows; i++) {
				List<String> celllist = new ArrayList<String>();
				row = sheet.getRow(i);
				Object cellValue = null;
				for (int k = 0; k < totalCells; k++) {
					cell = row.getCell(k);
					if (null != cell) {
						switch (cell.getCellType()) {
						case HSSFCell.CELL_TYPE_NUMERIC: // 数字
							cellValue = cell.getNumericCellValue();
							break;
						case HSSFCell.CELL_TYPE_STRING: // 字符串
							cellValue = cell.getStringCellValue();
							break;
						case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
							cellValue = cell.getBooleanCellValue() + "";
							break;
						case HSSFCell.CELL_TYPE_FORMULA: // 公式
							evaluator.evaluateFormulaCell(cell);
							cellValue = cell.getNumericCellValue();
							break;
						case HSSFCell.CELL_TYPE_BLANK: // 空值
							cellValue = "";
							break;
						case HSSFCell.CELL_TYPE_ERROR: // 故障
							cellValue = "非法字符";
							break;
						default:
							cellValue = "未知类型";
							break;
						}
					} else {
						cellValue = "";
					}
					if(cell.getCellType() == 0){ //判断是否为数字格式避免出现 9变为9.0
						 cell.setCellType(HSSFCell.CELL_TYPE_STRING);
						 cellValue = cell.getStringCellValue();
					}
					celllist.add(cellValue+"");

 

猜你喜欢

转载自brotherqqiang.iteye.com/blog/2268691