JavaでExcelのセルに目盛線（グリッド線）またはボーダーを適用する方法

罫線と目盛線は同じではありません。目盛線は、ワークシート全体を貫く1画素単位の灰色の線です。主な目的は、ワークシート上で作業する際に、セルの境界を確認できるようにすることです。目盛線は、セルや枠線に色を付けると見えなくなります。罫線は、さまざまな幅や2重の線を持つことができ、色をつけることもできます。罫線は常に通常の印刷と一緒に印刷されます。
今回は、無料の[Free Spire.XLS for Java](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html)を使って、Javaで**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ファイルを依存関係としてプロジェクトにインポートしてください。
## ワークシートに目盛線を表示する
目盛線は常にワークシートまたはワークブック全体に適用され、特定のセルや範囲に適用することはできません。 **Worksheet.setGridLinesVisible()** メソッドは、ワークシートに目盛線を表示するかどうかを制御するメソッドです。以下は、Free Spire.XLS for Javaを使用して目盛線を表示させる手順です。
- **Workbook**クラスのオブジェクトを作成します。
- **Workbook.loadFromFile()** メソッドを使用して、Excelワークブックを読み込みます。
- **Workbook.getWorksheets().get()** メソッドを使用して、特定のワークシートを取得します。
- **Worksheet.setGridLinesVisible()** メソッドを使用して、ワークシートに目盛線を表示します。
- **Workbook.saveToFile()** メソッドを使用して、ワークブックを保存します。

**Java**
```Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class showGridlines {

    public static void main(String[] args) {

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

        //Excelワークブックを読み込む
        workbook.loadFromFile("住居費.xlsx");

        //1つ目のワークシートを取得する
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //指定したワークシートに目盛線を表示する
        worksheet.setGridLinesVisible(true);

        //ドキュメントを保存する
        workbook.saveToFile("目盛線の表示.xlsx", ExcelVersion.Version2016);
    }
}
```
**【出力されるExcelファイル】**
![ワークシートに目盛線を表示する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/c0b76dca-0c84-7237-580c-39cf5dd328e2.png)

## データを含むセル範囲に罫線を適用する
データがあるセル範囲にのみボーダーを適用したい場合もあります。データのあるセル範囲を **Worksheet.getAllocatedRange()** メソッドで取得し、**CellRange.borderAround()** メソッドまたは **CellRange.borderInside()** メソッドで外側または内側の罫線を設定すればよいのです。
- **Workbook**クラスオブジェクトを作成します。
- **Workbook.loadFromFile()** メソッドでExcelワークブックを読み込みます。
- **Workbook.getWorksheets().get()** メソッドで特定のワークシートを取得します。
- **Worksheet.getAllocatedRange()** メソッドでデータを含むセル範囲を取得します。
- **CellRange.borderAround()** メソッドと **CellRange.borderInside()** メソッドでセル範囲に罫線を適用しています。
- **Workbook.saveToFile()** メソッドでワークブックを保存します。

**Java**
```Java
import com.spire.xls.*;

import java.awt.*;

public class applyBordersToLocatedRange {

    public static void main(String[] args) {

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

        //Excelワークブックを読み込む
        workbook.loadFromFile("住居費.xlsx");

        //1つ目のワークシートを取得する
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //データを含むセル範囲を取得する
        CellRange cellRange = worksheet.getAllocatedRange();

        //外枠を範囲に適用する
        cellRange.borderAround(LineStyleType.MediumDashed, Color.black);

        //範囲に内枠を適用する
        cellRange.borderInside(LineStyleType.Thin, Color.black);

        //ドキュメントを保存する
        workbook.saveToFile("罫線の適用.xlsx", ExcelVersion.Version2016);
    }
}
```
**【出力されるExcelファイル】**
![データを含むセル範囲に罫線を適用する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4c3636fd-0a93-6a5e-9a7e-4a0afc813091.png)

## 選択されたセル範囲に罫線を適用する
ある領域のデータを他の領域と区別するために、異なるセル範囲に異なるボーダースタイルを適用することができます。内側と外側のボーダーとは別に、セルやセル範囲の上下左右の罫線を設定することができます。次のステップでは、その方法を説明します。
- **Workbook**クラスのオブジェクトを作成します。
- **Workbook.loadFromFile()** メソッドでExcelワークブックを読み込みます。
- **Workbook.getWorksheets().get()** メソッドで特定のワークシートを取得します。
- **Worksheet.getRange().get()** メソッドでセル範囲を取得します。
- **CellRange.getBorders().getByBordersLineType()** メソッドで、セル範囲からIBorderクラスのオブジェクトを取得します。
- **IBorder**オブジェクトの **setLineStyle()** と **setColor()** メソッドで罫線のスタイルとカラーを設定します。
- **Workbook.saveToFile()** メソッドでワークブックを保存します。

**Java**
```Java
import com.spire.xls.*;
import com.spire.xls.core.IBorder;

import java.awt.*;

public class applyBordersToSelectedRanges {

    public static void main(String[] args) {

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

        //Excelワークブックを読み込む
        workbook.loadFromFile("住居費.xlsx");

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

        //セル範囲1を取得する
        CellRange range_one = worksheet.getRange().get("B3:E3");

        //この範囲の罫線を設定する
        IBorder topBorder = range_one.getBorders().getByBordersLineType(BordersLineType.EdgeTop);
        topBorder.setLineStyle(LineStyleType.Medium);
        topBorder.setColor(Color.red);
        IBorder bottomBorder = range_one.getBorders().getByBordersLineType(BordersLineType.EdgeBottom);
        bottomBorder.setLineStyle(LineStyleType.Thin);
        bottomBorder.setColor(Color.red);

        //セル範囲2を取得し、その罫線を設定する
        CellRange range_two = worksheet.getRange().get("B4:B13");
        IBorder rightBorder = range_two.getBorders().getByBordersLineType(BordersLineType.EdgeRight);
        rightBorder.setLineStyle(LineStyleType.Thin);
        rightBorder.setColor(Color.red);

        //セル範囲3を取得し、その罫線を設定する
        CellRange range_three = worksheet.getRange().get("B14:E14");
        topBorder = range_three.getBorders().getByBordersLineType(BordersLineType.EdgeTop);
        topBorder.setLineStyle(LineStyleType.Thin);
        topBorder.setColor(Color.red);
        bottomBorder = range_three.getBorders().getByBordersLineType(BordersLineType.EdgeBottom);
        bottomBorder.setLineStyle(LineStyleType.Medium);
        bottomBorder.setColor(Color.red);

        //ドキュメントを保存する
        workbook.saveToFile("罫線の設定.xlsx", ExcelVersion.Version2016);
    }
}
```
**【出力されるExcelファイル】**
![選択されたセル範囲に罫線を適用する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/6e1b8a44-ac20-3bd5-23f1-9ecff1487452.png)

> **この記事では、ワークシートのセルに目盛線と罫線を適用する方法について説明します。その他にもFree Spire.XLS for Javaには便利な機能がたくさんあります。このツールについて何か質問がある場合は、[Spire.XLS Forum](https://www.e-iceblue.com/forum/spire-xls-f4.html)にアクセスしてください。**