Java 读取Excel文件(POI)

POI读取Excel有两种格式一个是HSSF,另一个是XSSF。本文主要是利用HSSF读取Excel

先说下HSSF和XSSF的区别

官方给出的解释如下:

HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.

即:HSSF适用2007及以前的版本,XSSF适用2007版本以上的

现在进入正题

Step1:读取Excel

FileInputStream fis = new FileInputStream(path);//path为Excel路径
HSSFWorkbook wb = new HSSFWorkbook(fis);

Step2:获取Excel中的Sheet

Sheet sheet = wb.getSheetAt(sheetNumber);//sheetNumber为sheet的编号,从0开始

Step3:遍历每行(Row)中的每个单元格(Cell)的内容

for (Iterator<Row> rit = sheet.rowIterator(); rit.hasNext();) {
	Row row = rit.next();
	for (Iterator<Cell> cit = row.cellIterator(); cit.hasNext();) {
		Cell cell = cit.next();
		//做些什么
	}
}
PS:用Row对象的cellIterator()方法遍历每行的单元格,当单元格内容为NULL的时候,是会自动跳过的 (囧 我就吃了这个亏……),可以改用Row对象的getCell(int num)方法,获得num指的的单元格内容(可能为NULL)


Step4:获得单元格(Cell)内容,以下是我根据官方给出的方法,自己改了下,返回的都是String类型的值(项目需要 Orz)

private String returnCellValue(Cell cell) {
        String value = "";
        switch (cell.getCellType()) {
               case Cell.CELL_TYPE_STRING:
			value = cell.getRichStringCellValue().getString();
			break;
		case Cell.CELL_TYPE_NUMERIC:
			if (DateUtil.isCellDateFormatted(cell)) {
				Date date = cell.getDateCellValue();
				value = date.toString();
			} else {
				int d = (int) cell.getNumericCellValue();
				value = d + "";
			}
			break;
		case Cell.CELL_TYPE_BOOLEAN:
			boolean b = cell.getBooleanCellValue();
			value = b + "";
			break;
		case Cell.CELL_TYPE_FORMULA:
			value = cell.getCellFormula();
			break;
		default:
			// System.out.println();
	}
        return value;
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值