文章目录
- 前言
- 使用步骤
- 1.引入库
- 2.读入数据
前言
如何通过java代码解析excel文件
使用步骤
1.引入库
代码如下(示例):
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
2.读入数据
代码如下(示例):
List<Map<Integer, Object>> list = new ArrayList<>();
//加载数据源文件
//把目标文件转化为文件流
File excelFile=new File("#文件路径");
//判断是否是文件并且是否存在
if(excelFile.isFile()&&excelFile.exists()){
//创建输出流对象
FileInputStream fls=new FileInputStream(excelFile);
//将输出的流对象引入到解析excel文件的对象中
Workbook wb=null;
/*判断文件是xlsx结尾还是xls结尾 声明XSSF或HSSF对象*/
String[] split = excelFile.getName().split("\\.");
if(split[1].equals("xlsx")){
wb= new XSSFWorkbook(fls);
}else if(split[1].equals("xls")){
wb= new HSSFWorkbook(fls);
}
//获取工作表页数据
//读取第1页的数据
Sheet sheet=wb.getSheetAt(0);
//获取工作表页中行数据
//读取的行,如果sheet中一行数据没有返回-1,只有第一行有数据则返回0,最后有数据的行是第n行则返回n-1
int firstRowIndex=sheet.getFirstRowNum();
//读取的总的行数
int lastRowIndex=sheet.getLastRowNum();
//可以通过for循环遍历每一行的数据再在循环内对列的数据进行处理
for(int i=firstRowIndex;i<=lastRowIndex;i++){
Map<Integer,Object> map=new HashMap<>();
//获取指定行的数据
Row row=sheet.getRow(i);
//获取工作表页中指定行的指定列数据
//当前行的第一个列的数据的下标
int firstCellIndex=row.getFirstCellNum();
//row中一列数据都没有则返回-1,只有第一列有数据则返回-1,最后有数据的列是第n列则返回n
int lastCeeIndex=row.getLastCellNum();
//获取当前下标(列)的单元格数据
for(int j=firstCellIndex;j<lastCeeIndex;j++){
Cell cell=row.getCell(j);
map.put(j,cell);
}
list.add(map);
}
}else{
System.out.println("文件类型错误");
}