Java读取Excel的小知识


对应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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值