使用Spring Boot将Excel文件中的数据插入MySQL可以通过以下步骤实现:
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Apache POI for Excel manipulation -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
@RestController
注解标记该类,并使用@PostMapping
注解标记处理POST请求的方法。import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ExcelController {
@PostMapping("/insertData")
public String insertData(@RequestBody byte[] excelData) {
// TODO: 解析Excel文件并将数据插入MySQL
return "Data inserted successfully!";
}
}
insertData
方法中,可以使用Apache POI库来解析Excel文件并将数据插入MySQL。可以使用HSSFWorkbook
或XSSFWorkbook
类来读取Excel文件,根据文件格式选择适当的类。import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@RestController
public class ExcelController {
@PostMapping("/insertData")
public String insertData(@RequestBody byte[] excelData) {
try {
// 将字节数组转换为输入流
ByteArrayInputStream inputStream = new ByteArrayInputStream(excelData);
// 创建工作簿对象
Workbook workbook = new XSSFWorkbook(inputStream);
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 遍历行
for (Row row : sheet) {
// 读取每行的数据并插入MySQL
String column1 = row.getCell(0).getStringCellValue();
int column2 = (int) row.getCell(1).getNumericCellValue();
insertRowDataIntoMySQL(column1, column2);
}
// 关闭工作簿和输入流
workbook.close();
inputStream.close();
return "Data inserted successfully!";
} catch (IOException | SQLException e) {
e.printStackTrace();
return "Error occurred while inserting data.";
}
}
private void insertRowDataIntoMySQL(String column1, int column2) throws SQLException {
// 连接MySQL数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
// 准备插入数据的SQL语句
String sql = "INSERT INTO mytable (column1, column2) VALUES (?, ?)";
// 创建预编译语句对象
PreparedStatement statement = connection.prepareStatement(sql);
// 设置参数值
statement.setString(1, column1);
statement.setInt(2, column2);
// 执行插入操作
statement.executeUpdate();
// 关闭连接和语句对象
statement.close();
connection.close();
}
}
以上代码示例假设MySQL数据库位于本地主机(localhost),端口为3306,数据库名为mydatabase,用户名和密码需要根据实际情况进行修改。
/insertData
端点。可以使用Postman或类似的工具进行测试。注意:以上代码仅提供了基本的示例,实际应用中可能需要进行错误处理、数据验证和其他优化。另外,为了保证安全性,建议在实际生产环境中使用连接池管理数据库连接。
推荐的腾讯云相关产品和产品介绍链接地址: