在Java中解析Excel文件,可以使用Apache POI库。以下是一个简单的例子,展示如何使用Apache POI读取一个Excel文件(假设为.xlsx
格式)的内容。
首先,确保你的项目中包含了Apache POI的依赖。如果你使用Maven,可以添加以下依赖到你的pom.xml
文件中:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
1、以下是一个简单的Java程序,用于读取Excel文件中的数据(参数类型为文件):
@Override
public void UploadFile(MultipartFile multipartFile) {
File file = null;
try {
file = File.createTempFile("temp", multipartFile.getOriginalFilename());
multipartFile.transferTo(file);
FileInputStream inputStream = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
for (Row row : sheet) { // 迭代每一行
log.info("开始处理"+row.getRowNum()+"行数据"); // 换行,表示一行数据结束
for (Cell cell : row) { // 迭代每一列
if(row.getRowNum()>0){
switch (cell.getCellTypeEnum()) {
case STRING:
log.info(cell.getStringCellValue()+ "\t");
break;
case NUMERIC:
log.info(cell.getNumericCellValue()+ "\t");
break;
case BOOLEAN:
log.info(cell.getBooleanCellValue()+ "\t");
break;
case FORMULA:
log.info(cell.getCellFormula()+ "\t");
break;
default:
break;
}
}
}
}
//关闭文件输入流
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2、本地资源:以下是一个简单的Java程序,用于读取Excel文件中的数据(参数类型为文件路径 如:静态资源下templates/excel/excel/file.xlsx)
@Override
public void UploadFile(String excelFilePath) {
try {
FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
for (Row row : sheet) { // 迭代每一行
log.info("开始处理"+row.getRowNum()+"行数据"); // 换行,表示一行数据结束
for (Cell cell : row) { // 迭代每一列
if(row.getRowNum()>0){
switch (cell.getCellTypeEnum()) {
case STRING:
log.info(cell.getStringCellValue()+ "\t");
break;
case NUMERIC:
log.info(cell.getNumericCellValue()+ "\t");
break;
case BOOLEAN:
log.info(cell.getBooleanCellValue()+ "\t");
break;
case FORMULA:
log.info(cell.getCellFormula()+ "\t");
break;
default:
break;
}
}
}
}
//关闭文件输入流
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
3、网络资源:以下是一个简单的Java程序,用于读取Excel文件中的数据(参数类型为文件路径网络资源 如:http://192.168.xx.xx:8080/upload/gjcTemporaryStorage/5ca5486f-599b-47d6-a1cd-552c46b47d48.xls)
@Override
public void UploadFile(String excelFilePath) {
try {
InputStream inputStream = new
URL(enterDetails.getFileSavePath()).openStream();
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
for (Row row : sheet) { // 迭代每一行
log.info("开始处理"+row.getRowNum()+"行数据"); // 换行,表示一行数据结束
for (Cell cell : row) { // 迭代每一列
if(row.getRowNum()>0){
switch (cell.getCellTypeEnum()) {
case STRING:
log.info(cell.getStringCellValue()+ "\t");
break;
case NUMERIC:
log.info(cell.getNumericCellValue()+ "\t");
break;
case BOOLEAN:
log.info(cell.getBooleanCellValue()+ "\t");
break;
case FORMULA:
log.info(cell.getCellFormula()+ "\t");
break;
default:
break;
}
}
}
}
//关闭文件输入流
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
运行结果