下文介绍java解析Excel文件的方案
前置准备
1.第三方jar包或者Maven配置
org.apache.poi的jar包
Maven配置如下
<groupId>org.apache.poi
<artifactId>poi
<version>3.15
</dependency>
分析
首先我们大概分析下,实现解析大概需要那几步:
第一步、加载数据源文件
说明:把源文件以数据流的形式写入可以操作解析Excel文件的对象中
第二步、获取工作表页数据
说明:利用可以操作解析Excel文件的对象,获取工作表页数据
第三步、获取工作表页中行数据
说明:工具类自带方法获取行数据
第四步、获取工作表页中指定行的指定列数据
说明:工具类自带方法获取列数据
实际说明
下面我们实际说明每一步所涉及到的代码内容,有些判断细节就不一一列举,请看后面的整体截图。
第一步、加载数据源文件
//先把目标文件转为文件流
File excel =new File("目标文件所处地址");
//创建输出流对象
FileInputStream fis =new FileInputStream(excel);
//将输出的流对象引入到解析excel文件的对象中
Workbook wb =new HSSFWorkbook(fis);
第二步、获取工作表页数据
//读取第三个工作表页的数据(第一个工作表是0)
Sheet sheet = wb.getSheetAt(2);
第三步、获取工作表页中行数据
//读取的行.如果sheet中一行数据都没有则返回-1,只有第一行有数据则返回0,最后有数据的行是第n行则返回n-1
int firstRowIndex = sheet.getFirstRowNum();
//读取的总的行数
int lastRowIndex = sheet.getLastRowNum();
//获取指定行的数据
Row row = sheet.getRow(1);
可以通过for循环,遍历每一行并获取行数据,再在循环内对列数据进行处理
第四步、获取工作表页中指定行的指定列数据
//当前行的第一个列数据的下标
int firstCellIndex = row.getFirstCellNum();
//row中一列数据都没有则返回-1,只有第一列有数据则返回1,最后有数据的列是第n列则返回n
int lastCellIndex = row.getLastCellNum();
//获取当前下标(列)的单元格数据
Cell cell = row.getCell(cIndex);
通过以上步骤就能解析到各行各列的数据值了,具体怎么存储、使用就可以结合实际的业务场景搭配使用。
下面详细说明下,解析过程中需要注意的一些细节点
源文件相关的一些判断处理
//判断是文件并且是存在的
if (excel.isFile() && excel.exists()) {
//拆分文件名和后缀
String[] split = excel.getName().split("\\."); //.是特殊字符,需要转义
//创建解析excel文件的对象类
Workbook wb;
//根据文件后缀(xls/xlsx)进行判断
if ("xls".equals(split[1])){
//创建输出流对象
FileInputStream fis =new FileInputStream(excel); //文件流对象
//将输出的流对象引入到解析excel文件的对象中
wb =new HSSFWorkbook(fis);
}else if ("xlsx".equals(split[1])){
//将文件对象引入到解析excel文件的对象中
wb =new XSSFWorkbook(excel);
}else {
System.out.println("文件类型错误!");
return null;
}