在应用系统中,数据导出功能不可或缺。无论是生成报表、备份记录还是交付给用户分析,导出为 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 自动化流程,可快速实现系统级数据导出功能,适用于生成报表、备份或跨平台共享数据的需求。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。