下面是Java实现Excel导入导出数据库的方法示例的完整攻略:
一、Excel导入数据库:
- 首先,需要添加相关的依赖包,如以下示例代码所示:
<!-- poi组件 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- poi-excel组件 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- ojdbc组件,具体版本根据自己项目的实际情况配置 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
- 创建一个工具类,进行Excel文件读取并将数据插入数据库。以下示例代码以读取Excel文件中的用户列表为例,将数据插入名为“user_info”的数据库表中。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class ExcelImporter {
public static void importExcel(File file) throws Exception {
// 加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe", "username", "password");
// 创建PreparedStatement对象
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO user_info (id, name, age, address) VALUES (?, ?, ?, ?)");
// 创建Excel文档对象
Workbook workbook = new XSSFWorkbook(new FileInputStream(file));
// 读取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 遍历工作表中的每一行
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
// 读取当前行
Row row = sheet.getRow(i);
// 获取单元格中的值
int id = (int) row.getCell(0).getNumericCellValue();
String name = row.getCell(1).getStringCellValue();
int age = (int) row.getCell(2).getNumericCellValue();
String address = row.getCell(3).getStringCellValue();
// 将值设置到PreparedStatement中
pstmt.setInt(1, id);
pstmt.setString(2, name);
pstmt.setInt(3, age);
pstmt.setString(4, address);
// 执行插入操作
pstmt.executeUpdate();
}
// 关闭连接和资源
pstmt.close();
conn.close();
workbook.close();
}
}
- 在Controller中调用工具类的导入方法,将客户端上传的Excel文件插入到数据库中。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/import", method = RequestMethod.POST)
public String importExcel(MultipartFile file) throws Exception {
// 创建临时文件
File tempFile = File.createTempFile("temp", null);
// 保存上传的文件到临时文件中
file.transferTo(tempFile);
// 调用导入方法
ExcelImporter.importExcel(tempFile);
// 删除临时文件
tempFile.delete();
// 重定向到用户列表页面
return "redirect:/user/list";
}
}
二、Excel导出数据库:
- 首先,需要添加相关的依赖包,如以下示例代码所示:
<!-- poi组件 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- poi-excel组件 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- ojdbc组件,具体版本根据自己项目的实际情况配置 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
- 创建一个工具类,进行数据库查询并将数据写入Excel文件。以下示例代码以查询名为“user_info”的数据库表中的用户列表为例,将数据写入Excel文件中。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class ExcelExporter {
public static void exportExcel(File file) throws Exception {
// 加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/xe", "username", "password");
// 创建PreparedStatement对象
PreparedStatement pstmt = conn.prepareStatement("SELECT id, name, age, address FROM user_info");
// 执行查询操作,获取结果集
ResultSet rs = pstmt.executeQuery();
// 创建Excel文档对象
Workbook workbook = new XSSFWorkbook();
// 创建一个工作表
Sheet sheet = workbook.createSheet("用户列表");
// 创建表头行
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("编号");
headerRow.createCell(1).setCellValue("姓名");
headerRow.createCell(2).setCellValue("年龄");
headerRow.createCell(3).setCellValue("地址");
// 遍历结果集,填充数据
int rowIndex = 1;
while (rs.next()) {
// 创建一行
Row row = sheet.createRow(rowIndex++);
// 填充数据
row.createCell(0).setCellValue(rs.getInt("id"));
row.createCell(1).setCellValue(rs.getString("name"));
row.createCell(2).setCellValue(rs.getInt("age"));
row.createCell(3).setCellValue(rs.getString("address"));
}
// 将Excel文件写入到磁盘中
workbook.write(new FileOutputStream(file));
// 关闭连接和资源
rs.close();
pstmt.close();
conn.close();
workbook.close();
}
}
- 在Controller中调用工具类的导出方法,将数据库中的用户列表生成Excel文件,并将文件发送给客户端下载。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.net.URLEncoder;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/export", method = RequestMethod.GET)
public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 获取项目根目录
String basePath = request.getSession().getServletContext().getRealPath("/");
// 定义Excel文件路径
String filePath = basePath + "/temp/user_list.xlsx";
// 调用导出方法,生成Excel文件
ExcelExporter.exportExcel(new File(filePath));
// 设置下载响应头
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户列表.xlsx", "UTF-8"));
// 将Excel文件发送给客户端下载
response.getOutputStream().write(FileUtils.readFileToByteArray(new File(filePath)));
}
}
以上是Java实现Excel导入导出数据库的方法示例的完整攻略,其中包含了两条示例。希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现Excel导入导出数据库的方法示例 - Python技术站