对应jar包
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//准备读取的Excel的路径
String pathname = "C:\\Users\\HJJ\\Desktop\\ExcelDemo.xlsx";File file = new File(pathname);
int rownum = 1;
Workbook workbook = null;
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
e.printStackTrace();
return;
}
// 判断Excel版本是否为2007
if (pathname.endsWith("xlsx")) {
// 2007及以上版本的
workbook = new XSSFWorkbook(inputStream);
} else if (pathname.endsWith("xls")) {
// 2003版本的
workbook = new HSSFWorkbook(inputStream);
} else {
// 不是Excel文件时
System.out.println("文件格式不对");
return;
}
// 获得第一个sheet
Sheet sheet = workbook.getSheetAt(0);
// 循环读取每行的内容知道某行为空
while (true) {
Row row = sheet.getRow(rownum);
// 某行为空时结束循环
if (row == null) {
break;
}
rownum++;
int rownum2 = row.getRowNum();
System.out.println(rownum2);
// 依次读取当前行的每列
Cell stuCodeCell = row.getCell(0);
Cell stuNameCell = row.getCell(1);
Cell stuSecCodeCell = row.getCell(2);
Cell classIdCell = row.getCell(3);
System.out.println("学籍号" + stuCodeCell.getStringCellValue() + "姓名" + stuNameCell.getStringCellValue() + "考号"
+ stuSecCodeCell.getStringCellValue() + "班级" + classIdCell.getStringCellValue());
}
输出
1
学籍号S343434434姓名姓名1考号302150440001班级2
2
学籍号S343434333姓名姓名2考号302150440114班级3
3
学籍号XXS3233333姓名姓名3考号302150440002班级4
以该Excel文件为例
可能遇到字段格式问题
Exception in thread "main" java.lang.IllegalStateException: Cannot get a text value from a numeric cell
at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:845)
at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:294)
at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:246)
at test.Excel.main(Excel.java:74)
解决办法参考http://blog.csdn.net/ysughw/article/details/9288307