JavaでデータベースからExcelにデータを書き出す方法

Excel は、大量のデータを分類、構造化、分析、操作するために広く使用されているツールです。データベース内のデータを分析する必要がある場合、まずデータをExcelのワークシートに変換します。今回は、無料の [Free Spire.XLS for Java](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html) を使って、**AccessのテーブルからExcelにデータをエクスポートする方法**を紹介します。

- **[データベースのデータをExcelに書き出す](#データベースのデータをexcelに書き出す)**

## 【依存関係の追加】

> **この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。**

### 1. Maven

Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

```XML
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```

### 2. 公式サイトよりJarファイルをダウンロード

まず、[Free Spire.XLS for Java](https://jp.e-iceblue.com/download/free-spire-excel-for-java.html) の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Xls.jarファイルを依存関係としてプロジェクトにインポートしてください。

## データベースのデータをExcelに書き出す

> **Spire.XLS for Javaを使用して、データベースからExcelへデータを書き出す手順を説明します。**

- **Workbook** クラスのオブジェクトを作成します。
- **Workbook.getWorksheets().get()** メソッドを使用して、最初のワークシートを取得します。
- **DataTable** クラスのオブジェクトを作成します。
- データベースに接続し、データベースから **DataTable** にデータを書き出します。
- **Worksheet.insertDataTable()** メソッドを使用して、**DataTable** をワークシートに書き込む。
- **Workbook.saveToFile()** メソッドを使用してワークブックを保存します。

**Java**

```Java
import com.spire.data.table.DataTable;
import com.spire.data.table.common.JdbcAdapter;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import java.sql.*;

public class exportDataFromDatabaseToExcel {

    public static void main(String[] args) {

        //Workbookクラスのオブジェクトを作成する
        Workbook wb = new Workbook();

        //最初のワークシートを取得する
        Worksheet sheet = wb.getWorksheets().get(0);

        //DataTableクラスのオブジェクトを作成する
        DataTable dataTable = new DataTable();

        //データベースに接続する
        String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};"
                + "DBQ=C:/Users/Allen/Desktop/データベース.mdb";
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            try {
                Connection conn = DriverManager.getConnection(url);
                Statement sta = conn.createStatement();

                //データベースからテーブルを選択する
                ResultSet resultSet = sta.executeQuery("select * from テーブル1");
                JdbcAdapter jdbcAdapter = new JdbcAdapter();

                //データベースからDataTableにデータを書き出す
                jdbcAdapter.fillDataTable(dataTable, resultSet);

            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        //ワークシートにDataTableを書き込む
        sheet.insertDataTable(dataTable, true, 1, 1);

        //列幅を自動に調整する
        sheet.getAllocatedRange().autoFitColumns();

        //Excelファイルに保存する
        wb.saveToFile("Excelへの書き出し.xlsx", ExcelVersion.Version2016);
    }
}
```

### 【出力されるExcelファイル】
 
> **この記事では、データベースからExcelワークシートにデータをインポートする方法について説明します。この記事を読んでもまだ問題がある場合、またはSpire.XLS for Javaについてもっと知りたい場合は、[Spire.XLS Forum](https://www.e-iceblue.com/forum/spire-xls-f4.html)に移動してください。**