记录一下自己在Java开发过程中,遇到的对excel进行解析的的问题。
一、引入包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.10.0</version>
</dependency>
二、解析excel文件
public class Test02 {
public void contextLoads() throws Exception{
//创建Excel,读取文件内容(xlsx,xls都可)
File file=new File("C:\\Users\\Desktop\\test.xlsx");
XSSFWorkbook workbook=new XSSFWorkbook(FileUtils.openInputStream(file));
//读取工作表
for (int s=0;s< workbook.getNumberOfSheets();s++) {
//获取当前sheet页
Sheet sheet = workbook.getSheetAt(s);
//获取sheet中最后一行行号
int lastRowNum=sheet.getLastRowNum();
for (int i=1;i<=lastRowNum;i++){
Row row=sheet.getRow(i);
//获取当前行最后单元格列号
int lastCellNum=row.getLastCellNum();
for (int j=0;j<lastCellNum;j++){
Cell cell=row.getCell(j);
String value=cell.getStringCellValue();
//输出当前单元格信息
System.out.println(value);
}
}
}
}
}
如果要对上传的excel文件进行解析时,需要对代码进行修改,更改为
public void contextLoads(MultipartFile file) throws Exception{
//读取文件内容(xlsx,xls都可)
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
//读取工作表
for (int s=0;s< workbook.getNumberOfSheets();s++) {
//获取当前sheet页
Sheet sheet = workbook.getSheetAt(s);
//获取sheet中最后一行行号
int lastRowNum=sheet.getLastRowNum();
for (int i=1;i<=lastRowNum;i++){
Row row=sheet.getRow(i);
//获取当前行最后单元格列号
int lastCellNum=row.getLastCellNum();
for (int j=0;j<lastCellNum;j++){
Cell cell=row.getCell(j);
String value=cell.getStringCellValue();
//输出当前单元格信息
System.out.println(value);
}
}
}
}