1、创建要读取的excel
在电脑的D盘下面创建一个excel,内容大致如下:
2、读取excel数据
package com.zdw.poi;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
/**
* 导入excel,读取数据
*/
public class ExcelImput {
public static void main(String[] args) throws Exception {
//获取文件输入流
FileInputStream inputStream = new FileInputStream("D:\\2345Downloads\\test.xlsx");
//通过文件流创建 工作簿
Workbook workbook = WorkbookFactory.create(inputStream);
//通过工作簿得到第一个sheet,参数是从0开始
Sheet sheet = workbook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();//得到行索引,从0开始
System.out.println("这个excel文件共有:"+lastRowNum+"行");
Row row = null;
Cell cell = null;
for(int rowNull = 1; rowNull<=lastRowNum; rowNull++){
row = sheet.getRow(rowNull);//通过行号得到行信息
//得到最大的列号,从1开始
short lastCellNum = row.getLastCellNum();
//System.out.println("最大的列号:"+lastCellNum);
StringBuilder stringBuilder = new StringBuilder();
for(short cellNum=1;cellNum<lastCellNum;cellNum++){
cell = row.getCell(cellNum);
//因为每个cell单元格的格式不同,所以要根据不同的格式,以不同的方式获取数据
Object cellValue = getCellValue(cell);
stringBuilder.append(cellValue).append("-");
}
System.out.println(stringBuilder.toString());
}
}
public static Object getCellValue(Cell cell){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
Object result = null;
CellType cellType = cell.getCellType();//得到单元格的数据类型
switch (cellType){
case STRING: //字符串类型
result = cell.getStringCellValue();
break;
case BOOLEAN: //boolean类型
result = cell.getBooleanCellValue();
break;
case NUMERIC: //数字类型和日期类型都会走这里
if(DateUtil.isCellDateFormatted(cell)){//表示的是日期
result = cell.getDateCellValue();
result = simpleDateFormat.format(result);
}else{//表示的普通数字
result = cell.getNumericCellValue();
}
break;
case FORMULA: //表示的公式
result = cell.getCellFormula();
break;
default:
break;
}
return result;
}
}
3、打印控制台效果
这个excel文件共有:4行
1.0-张三-23.0-17773806476-男-2018/11/08-
2.0-李四-24.0-17773806471-男-2018/11/09-
3.0-王五-25.0-17773806472-男-2018/11/10-
4.0-赵六-26.0-17773806473-男-2018/11/11-