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+"");

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值