【Java】Excelワークシートの行と列を挿入または削除する方法

無料の[Free Spire.XLS for Java](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html)を使用すると、プログラムで簡単にExcelワークシートの行や列を挿入したり削除したりすることができます。今回は、Javaアプリケーションで**Excelワークシートの行や列を挿入・削除する方法**を、以下の部分から紹介します。
- **[Excelワークシートに行を挿入する](#excelワークシートに行を挿入する)**
- **[Excelワークシートに列を挿入する](#excelワークシートに列を挿入する)**
- **[Excelワークシートの行と列を削除する](#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ワークシートに行を挿入する
Free Spire.XLS for Javaでは、Excelワークシートに行を挿入するための **Worksheet.insertRow()** メソッドを提供しています。ここでは、Excelのワークシートに行を挿入する手順を説明します。
- **Workbook** クラスのインスタンスを作成し、**Workbook.loadFromFile()** メソッドを使用してExcelドキュメントを読み込みます。
- **Workbook.getWorksheets().get()** メソッドを使用して、指定したワークシートを取得します。
- **Worksheet.insertRow(int rowIndex)** メソッドを使用して、行を挿入します。
- **Worksheet.insertRow(int rowIndex, rowCount)** メソッドを使用して複数行を挿入します。
- **Workbook.saveToFile()** メソッドを使用して、ワークブックをファイルに保存します。

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


public class insertRows {
    public static void main(String[] args) {

        //Workbookクラスのインスタンスを作成し、Excelワークブックを読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromFile("家財道具の一覧.xlsx");

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

        //ワークシートに行を挿入する
        worksheet.insertRow(5);

        //ワークシートに複数の行を挿入する
        worksheet.insertRow(8, 2);

        //ワークブックを保存する
        workbook.saveToFile("行の挿入.xlsx", ExcelVersion.Version2013);
    }
}
```
![2023-01-29_142734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/fb6a9615-aec3-b251-00dd-25c6f1a0c04f.png)

## Excelワークシートに列を挿入する
Free Spire.XLS for Javaは、Excelワークシートに列を挿入する **Worksheet.insertColumn()** メソッドを提供しています。以下は、Javaでワークシートに列を挿入する手順です。
- **Workbook** クラスのインスタンスを作成し、**Workbook.loadFromFile()** メソッドを使用してExcelドキュメントを読み込みます。
- **Workbook.getWorksheets().get()** メソッドを使用して、指定したワークシートを取得します。
- **Worksheet.insertColumn(int columnIndex)** メソッドを用いて、列を挿入します。
- **Worksheet.insertColumn(int columnIndex, columnCount)** メソッドを使用して、複数の列を挿入します。
- **Workbook.saveToFile()** メソッドを使用して、ワークブックをファイルに保存します。

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


public class insertColumn {
    public static void main(String[] args) {

        //Workbookクラスのインスタンスを作成し、Excelワークブックを読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromFile("家財道具の一覧.xlsx");

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

        //ワークシートに列を挿入する
        worksheet.insertColumn(3);

        //ワークシートに複数の列を挿入する
        worksheet.insertColumn(5, 2);

        //ワークブックを保存する
        workbook.saveToFile("列の挿入.xlsx", ExcelVersion.Version2013);
    }
}
```
![2023-01-29_142751.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/5c965e83-12ed-1d99-77d2-7873d1189e9d.png)

## Excelワークシートの行と列を削除する
Excelシートに列を追加する手順は、行を追加する手順と似ています。行と列の削除の手順も同様です。ここでは、JavaでExcelのワークシートから行と列を削除する手順を説明します。
- **Workbook** クラスのインスタンスを作成し、**Workbook.loadFromFile()** メソッドを使用してExcelドキュメントを読み込みます。
- **Workbook.getWorksheets().get()** メソッドを使用して、指定したワークシートを取得します。
- **Worksheet.deleteRow(index)** メソッドで行を削除します。
- **Worksheet.deleteColumn(index, count)** メソッドを使用して、複数の列を削除します。
- **Workbook.saveToFile()** メソッドを使用して、ワークブックをファイルに保存する。

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


public class deleteRowsColumns {
    public static void main(String[] args) {

        //Workbookクラスのインスタンスを作成し、Excelワークブックを読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromFile("家財道具の一覧.xlsx");

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

        //3行目を削除する
        worksheet.deleteRow(4);

        //5列目から2つの列を削除する
        worksheet.deleteColumn(5, 2);

        //ワークブックを保存する
        workbook.saveToFile("行と列の削除.xlsx", ExcelVersion.Version2013);
    }
}
```
![2023-01-29_143826.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b1692960-7be7-4214-4a47-4a9704a25e64.png)

## Excelワークシートの空白の行と列を削除する
プログラマーとして、Excelワークシートの空白の行や列をすべて削除しなければならない場面に出くわすことがあります。Free Spire.XLS for Javaは、すべての空白の行と列を削除することもサポートしています。
- **Workbook** クラスのインスタンスを作成し、**Workbook.loadFromFile()** メソッドを使用してExcelドキュメントを読み込みます。
- **Workbook.getWorksheets().get()** メソッドを使用して、指定されたワークシートを取得します。
- すべての行をループして、**worksheet.getRows().isBlank()** メソッドを使用して、行が空白であるかどうかをチェックします。
- もしそうなら、**Worksheet.deleteRow()** メソッドを使用して、空白の行を削除します。
- 列が空白であるかどうかを確認するには、**Worksheet.getColumns().isBlank()** メソッドを使用します。
- もしそうなら、**Worksheet.deleteColumn()** メソッドを使用して、空白の列を削除します。
- **Workbook.saveToFile()** メソッドを使用して、ワークブックをファイルに保存します。

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


public class deleteBlankRowsColumns {
    public static void main(String[] args) {

        //Workbookクラスのインスタンスを作成し、Excelワークブックを読み込む
        Workbook workbook = new Workbook();
        workbook.loadFromFile("空白行と空白列.xlsx");

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

        //ワークシートから空白行を削除する
        for (int i = worksheet.getRows().length - 1; i >= 0; i--) {
            if (worksheet.getRows()[i].isBlank()) {
                worksheet.deleteRow(i + 1);
            }
        }

        //ワークシートから空白列を削除する
        for (int j = worksheet.getColumns().length - 1; j >= 0; j--) {
            if (worksheet.getColumns()[j].isBlank()) {
                worksheet.deleteColumn(j + 1);
            }
        }

        //ワークブックを保存する
        workbook.saveToFile("空白行・空白列の削除.xlsx", ExcelVersion.Version2013);
    }
}
```
![2023-01-29_145815.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/188d7f4b-1a6f-af10-dd77-67f01e6ccdb7.png)

> **Free Spire.XLS for Javaは、Excelファイルの変換や、その他多くの編集作業を行うことができます。 Excelワークブックの操作については、[Spire.XLS Forum](https://www.e-iceblue.com/forum/spire-xls-f4.html)をご覧ください。**