前言
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
1.读取文档前,我们需要知道excel是 03 版的还是07版的,因为版本不一样,读取方式也不一样,
下面提供几点看版本的方式
- 可以看文件的扩展名,.xls是2003的,.xlsx是2007的。
- 打开后按住ctrl键不放,再狂按向下的箭头,直到最后一行,查看最后一行的行标,如果是65536就是2003的。如果是1048576就是2007的。
如果感兴趣的话,可以百度,还有很多种查看版本的方式,这里就不提供了,
创建一个代码查看版本的方法
//读取版本的方法
public static String getVersion(File file){
//获取文件全名称
String name = file.getName();
//获取文件名后缀
String suffix = name.substring(name.lastIndexOf("."));
//.xls是2003的,.xlsx是2007的
if(".xls".equals(suffix)){
return "2003";
} else if(".xlsx".equals(suffix)) {
return "2007";
} else{
return "excel版本不支持";
}
}
读取03版的方法
首先需要导入poi相关jar包,
导入上面的jar包即可实现读取,
编写代码
public static void main(String[] args) throws IOException {
File file = new File("D:\\区域导入测试数据.xls");
String version = getVersion(file);
if (version == "2003") {
//创建03版读取类
HSSFWorkbook work = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheetAt = work.getSheetAt(0);//读取sheetAt
for (Row row : sheetAt) {
if (row.getRowNum() == 0){
//如果是第一行,标题,那么就不打印
continue;
}
System.out.print("数据1="+row.getCell(0)+" "); //第一列的数据
System.out.print("数据2="+row.getCell(1)+" "); //第二列的数据
System.out.print("数据3="+row.getCell(2)+" "); //第三列的数据
System.out.println("数据4="+row.getCell(3)); //第四列的数据
}
work.close();
}
}
数据打印如下
07版读取代码如下
//07版本
public static void main(String[] args) throws IOException {
File file = new File("D:\\学习资料_框架学习\\bos需求文档\\02-BOS2.0\\速运快递项目-day04\\资料\\03_区域测试数据\\区域导入测试数据.xlsx");
String version = getVersion(file);
if(version == "2007"){
XSSFWorkbook work = new XSSFWorkbook(new FileInputStream(file));
XSSFSheet sheetAt = work.getSheetAt(0);
for (Row row : sheetAt) {
if (row.getRowNum() == 0){
//如果是第一行,标题,那么就不打印
continue;
}
System.out.print("数据1="+row.getCell(0)+" "); //第一列的数据
System.out.print("数据2="+row.getCell(1)+" "); //第二列的数据
System.out.print("数据3="+row.getCell(2)+" "); //第三列的数据
System.out.println("数据4="+row.getCell(3)); //第四列的数据
}
work.close();
}
}
数据打印如下
看代码我们可以发现,其中的代码相似读大的惊人,所以我们可以抽取公共代码
首先我们来看体系结构
我们可以发现,WorkBook是HSSFWOrkBook跟XSSFWorkBook的父类
Sheet也是如此,那么我们就可以上塑造型来实现抽取
public static void main(String[] args) throws IOException {
File file = new File("D:\\学习资料_框架学习\\bos需求文档\\02-BOS2.0\\速运快递项目-day04\\资料\\03_区域测试数据\\区域导入测试数据.xls");
String version = getVersion(file);
Workbook work;
Sheet sheetAt;
if(version == "2007"){
work = new XSSFWorkbook(new FileInputStream(file));
sheetAt = work.getSheetAt(0);
}else if(version == "2003"){
work = new HSSFWorkbook(new FileInputStream(file));
sheetAt = work.getSheetAt(0);//读取sheetAt
} else {
throw new RuntimeException("不支持该格式文件!");
}
for (Row row : sheetAt) {
if (row.getRowNum() == 0){
//如果是第一行,标题,那么就不打印
continue;
}
System.out.print("数据1="+row.getCell(0)+" "); //第一列的数据
System.out.print("数据2="+row.getCell(1)+" "); //第二列的数据
System.out.print("数据3="+row.getCell(2)+" "); //第三列的数据
System.out.println("数据4="+row.getCell(3)); //第四列的数据
}
work.close();
}
使用07版excel测试
使用03版excel测试
以上就是poi读取的代码,是不是很简单呢?