Java 数据库表导出为excel文件
时间: 2024-09-29 18:12:53 浏览: 64
java实现mysql数据库的表导出到excel文件
在Java中,我们可以使用JDBC(Java Database Connectivity)连接数据库,然后利用像Apache POI这样的库来操作Excel文件并导出数据。以下是一个简单的步骤概述:
1. **添加依赖**:
首先,你需要在项目中引入Apache POI的HSSF(用于处理旧版本的Excel文件)或XSSF(用于处理新的xlsx文件)依赖。如果你使用Maven,可以在pom.xml中添加:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
```
2. **建立JDBC连接**:
使用JDBC的`DriverManager.getConnection()`方法获取到数据库连接。
3. **查询数据库**:
编写SQL查询语句来获取需要导出的数据。
4. **创建Excel工作簿**:
使用POI创建一个新的HSSFWorkbook (如果使用HSSF) 或 XSSFWorkbook (如果使用XSSF)。
5. **创建工作表**:
创建一个新的Sheet,并设置其名称。
6. **填充数据**:
遍历查询结果,将每一行数据写入工作表对应的位置。
7. **保存Excel文件**:
将创建的工作簿写入到磁盘上的指定位置,关闭连接。
以下是一个简单的示例代码片段,展示了如何将ResultSet转换为Excel中的行数据:
```java
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public void exportToExcel(String url, String user, String password, String tableName) {
try {
// 建立数据库连接
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
// 查询数据
ResultSet rs = stmt.executeQuery("SELECT * FROM " + tableName);
// 打开Excel文件并创建新的工作簿
Workbook workbook = new XSSFWorkbook(); // 如果使用xlsx,使用XSSFWorkbook
Sheet sheet = workbook.createSheet(tableName);
// 获取列名
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
Row row = sheet.createRow(i);
Cell cell = row.createCell(i - 1);
cell.setCellValue(metaData.getColumnName(i));
}
// 写入数据
while (rs.next()) {
Row newRow = sheet.createRow(rs.getRowNum());
for (int i = 1; i <= columnCount; i++) {
Cell cell = newRow.createCell(i - 1);
cell.setCellValue(rs.getString(i));
}
}
// 保存Excel文件
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream); // 如果使用HSSF,使用workbook.write(outputStream)
workbook.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
```
阅读全文