在應用系統中,數據導出功能不可或缺。無論是生成報表、備份記錄還是交付給用户分析,導出為 Excel 是最常見的一種方式。本文將介紹如何使用 Java 將 SQLite 數據庫中的內容導出為 Excel 文件,自動生成表格並寫入數據。
所用技術框架
- SQLite:作為數據來源的輕量數據庫
- JDBC:用於查詢數據庫內容
- Free Spire.XLS for Java:用於生成並保存 Excel 表格
操作步驟
- 連接 SQLite 數據庫,讀取所有數據表;
- 使用 SQL 查詢每個表的數據內容;
- 創建 Excel 工作簿和工作表,寫入字段名和查詢結果;
- 最後保存為 Excel 文件。
Java 示例:從 SQLite 導出數據到 Excel
import com.spire.xls.*;
import java.sql.*;
public class SQLiteToExcel {
public static void main(String[] args) {
String dbPath = "jdbc:sqlite:BusinessData.db";
String outputExcel = "output/exported_data.xlsx";
// Create an Excel workbook and clear the default worksheets
Workbook workbook = new Workbook();
workbook.getWorksheets().clear();
try (Connection conn = DriverManager.getConnection(dbPath)) {
DatabaseMetaData meta = conn.getMetaData();
ResultSet tables = meta.getTables(null, null, "%", new String[]{"TABLE"});
while (tables.next()) {
String tableName = tables.getString("TABLE_NAME");
Worksheet sheet = workbook.getWorksheets().add(tableName);
// 查詢整張表
String query = "SELECT * FROM `" + tableName + "`";
try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query)) {
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
// 寫列名(表頭)
for (int i = 1; i <= columnCount; i++) {
sheet.getCellRange(1, i).setText(rsmd.getColumnName(i));
}
// 寫數據
int rowIndex = 2;
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
String value = rs.getString(i);
sheet.getCellRange(rowIndex, i).setText(value != null ? value : "");
}
rowIndex++;
}
}
}
// 移除默認空工作表(如果沒用)
if (workbook.getWorksheets().get(0).getName().equalsIgnoreCase("Sheet1") &&
workbook.getWorksheets().getCount() > 1) {
workbook.getWorksheets().removeAt(0);
}
// 保存 Excel 文件
workbook.saveToFile(outputExcel, ExcelVersion.Version2016);
System.out.println("Success!");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
示例數據庫數據:
導出的Excel文件:
小結
本文展示了將數據庫數據結構化導出為 Excel 的完整過程。配合 Java 自動化流程,可快速實現系統級數據導出功能,適用於生成報表、備份或跨平台共享數據的需求。