在应用系统中,数据导出功能不可或缺。无论是生成报表、备份记录还是交付给用户分析,导出为 Excel 是最常见的一种方式。本文将介绍如何使用 Java 将 SQLite 数据库中的内容导出为 Excel 文件,自动生成表格并写入数据。

所用技术框架

  • SQLite:作为数据来源的轻量数据库
  • JDBC:用于查询数据库内容
  • Free Spire.XLS for Java:用于生成并保存 Excel 表格

操作步骤

  1. 连接 SQLite 数据库,读取所有数据表;
  2. 使用 SQL 查询每个表的数据内容;
  3. 创建 Excel 工作簿和工作表,写入字段名和查询结果;
  4. 最后保存为 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);
        }
    }
}

示例数据库数据:
Java导出数据库到Excel文件数据库示例

导出的Excel文件:
Java导出数据库到Excel文件结果

小结

本文展示了将数据库数据结构化导出为 Excel 的完整过程。配合 Java 自动化流程,可快速实现系统级数据导出功能,适用于生成报表、备份或跨平台共享数据的需求。


大丸子
78 声望8 粉丝