Spring Boot读取Excel操作示例
对于Java开发人员来说,我们通常需要读取Excel文件中的数据来进行数据处理或导入到数据库中。在Spring Boot中,我们可以使用Apache POI库来实现读取Excel文件的操作。
步骤1:添加Apache POI依赖
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
步骤2:创建Java实体类
在读取Excel文件时,我们需要创建一个Java实体类来存储每一行数据的值。实体类可以根据Excel文件中数据的类型进行定义,如下所示:
public class Employee {
private String name;
private int age;
private String gender;
private String address;
// 其他字段
// getter和setter方法
}
步骤3:编写代码读取Excel文件
对于一个Excel文件,我们需要读取其中的sheet、行、列,并将数据解析成Java对象。以下示例代码演示了如何读取Excel文件中名为employee.xlsx
的数据,并将其解析成List<Employee>
类型的数据结构:
@Service
public class EmployeeService {
public List<Employee> readExcel() throws IOException {
List<Employee> employees = new ArrayList<>();
// 加载Excel文件
FileInputStream fileInputStream = new FileInputStream(new File("employee.xlsx"));
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
// 获取第一个sheet
XSSFSheet sheet = workbook.getSheetAt(0);
// 遍历每一行
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
XSSFRow row = sheet.getRow(i);
// 如果当前行为空,跳过
if (row == null) {
continue;
}
// 创建一个Employee对象并设置属性值
Employee employee = new Employee();
employee.setName(row.getCell(0).getStringCellValue());
employee.setAge((int) row.getCell(1).getNumericCellValue());
employee.setGender(row.getCell(2).getStringCellValue());
employee.setAddress(row.getCell(3).getStringCellValue());
// 将对象添加到List中
employees.add(employee);
}
// 关闭文件流和工作簿对象
fileInputStream.close();
workbook.close();
return employees;
}
}
上述代码通过创建FileInputStream
读取Excel文件,创建XSSFWorkbook
加载工作簿,并获取Sheet。最后遍历每一行通过XSSFRow
获取每一行数据。在获取到指定列的值时,我们可以使用getStringCellValue()
(如果该列的值是字符串类型)或getNumericCellValue()
(如果该列的值是数字类型)来获取单元格的值并设置到Java实体类中。
示例1:读取Excel文件的数据
假设我们有如下的Excel文件数据:
姓名 | 年龄 | 性别 | 地址 |
---|---|---|---|
张三 | 25 | 男 | 北京 |
李四 | 32 | 女 | 上海 |
我们可以通过以下代码来读取Excel文件数据:
@Autowired
EmployeeService employeeService;
@RequestMapping("/employees")
public List<Employee> getEmployees() throws IOException {
return employeeService.readExcel();
}
该代码将读取Excel文件数据,并返回一个List<Employee>
类型的数据结构。
示例2:将Excel文件数据导入到数据库中
假设我们有一个名为employee
的MySQL表,我们可以将Excel文件数据导入到该表中,方法如下:
@Repository
public class EmployeeRepository {
@Autowired
private JdbcTemplate jdbcTemplate;
public void saveEmployee(List<Employee> employees) {
String query = "INSERT INTO employee (name, age, gender, address) VALUES (?, ?, ?, ?)";
for (Employee employee : employees) {
jdbcTemplate.update(query, employee.getName(), employee.getAge(), employee.getGender(), employee.getAddress());
}
}
}
在EmployeeService
类中调用EmployeeRepository
的saveEmployee()
方法,将从Excel文件读取的数据存储到MySQL表中:
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
public void saveEmployees() throws IOException {
List<Employee> employees = readExcel();
employeeRepository.saveEmployee(employees);
}
}
运行saveEmployees()
方法后,在employee
表中将插入Excel文件中的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot读取Excel操作示例 - Python技术站