Javaを使用してExcelテキストボックスの追加、読み取り、削除する方法

この記事では、Javaプログラムを使用してExcelにテキストボックスを追加する方法を紹介します。テキストボックスを追加する時、テキストの追加、テキストの方向の設定、テキストの配置、テキストボックスのサイズ、位置、塗りつぶしの色/塗りつぶしの画像、テキストボックスを設定できます。回転角度、テキストボックス名、選択可能なテキスト、テキストボックスの非表示または表示、およびその他の操作も全てできます。
既存のテキストボックスの場合、テキストボックス内のテキストの読み取り、色の塗りつぶし、画像の塗りつぶし、テキストボックス名、不要なテキストボックスの削除などを行うことができます。以下は、例を通して特定の実装方法を示します。

使用ツール：Free Spire.XLS for Java（無料版）
Jarの取得とインポート：公式Webサイトからパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/xls-for-java-free.html)**し、libフォルダーの下のjarを解凍してjavaプログラムにインポートします。インポートをした結果は、次のとおりです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e11ee10d-29fd-98c6-34c6-4efa2fe5873c.png)

##Javaコード一覧
###1.　テキストボックスを追加する
```
import com.spire.xls.*;
import com.spire.xls.core.ITextBox;
import com.spire.xls.core.ITextBoxLinkShape;

import java.awt.*;

public class AddTextBox {
    public static void main(String[] args) {
        //インスタンスを作成する
        Workbook wb = new Workbook();

        //ワークブックを取得する
        Worksheet sheet = wb.getWorksheets().get(0);

        //テキストボックス1を追加する
        //テキストボックスの位置とサイズを指定する
        ITextBox textBox1 = sheet.getTextBoxes().addTextBox(3,3,150,300);
        //テキストボックスにテキストを追加する
        textBox1.setText("テキストボックスにテキストを追加する");
        //テキストボックスの塗りつぶしタイプを設定する
        ((ITextBoxLinkShape) textBox1).getFill().setFillType(ShapeFillType.SolidColor);
        //塗りつぶしの色を設定する
        ((ITextBoxLinkShape) textBox1).getFill().setForeColor(new Color(255,218,155));
        //テキストの配置を設定する
        textBox1.setHAlignment(CommentHAlignType.Center);
        textBox1.setVAlignment(CommentVAlignType.Center);
        //テキストの方向を設定する
        textBox1.setTextRotation(TextRotationType.TopToBottom);
        //テキストボックスを表示するように設定する
        ((ITextBoxLinkShape) textBox1).setVisible(true);
        //テキストボックス名を設定する
        ((ITextBoxLinkShape) textBox1).setName("テキストボックス1");


        //テキストボックス2を追加する
        //テキストボックスの位置とサイズを指定する
        ITextBox textBox2 = sheet.getTextBoxes().addTextBox(7,10,120,300);
        //テキストボックスにテキストコンテンツを追加する
        textBox2.setText("画像を追加してテキストボックス２に入力する");

        //テキストボックスを埋めるために画像を追加する
        ((ITextBoxLinkShape) textBox2).getFill().customPicture("C:\\Users\\Administrator\\Pictures\\tp.png");
        //テキストボックスを30度回転するように設定する
        ((ITextBoxLinkShape) textBox2).setRotation(30);
        //テキストボックス名を設定する
        ((ITextBoxLinkShape) textBox2).setName("テキストボックス2");
        //オプションのテキストを設定する
        ((ITextBoxLinkShape) textBox2).setAlternativeText("選択できるテキスト");

        //ドキュメントを保存する
        wb.saveToFile("AddTextBox.xlsx",ExcelVersion.Version2013);
        wb.dispose();
    }
}
```
テキストボックスを追加した結果：
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/1c68432e-98eb-39a1-26c4-6a59535a155c.png)

###2.　テキストボックスを読む
```
import com.spire.xls.*;
import com.spire.xls.core.spreadsheet.shapes.XlsTextBoxShape;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class ReadTextBox {
    public static void main(String[] args) throws IOException {
        //インスタンスを作成し、テストドキュメントをロードする 
        Workbook wb = new Workbook();
        wb.loadFromFile("AddTextBox.xlsx");

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

        //最初のテキストボックスを取得し、テキストを読み、色を塗りつぶする
        XlsTextBoxShape textBoxShape1 = (XlsTextBoxShape) sheet.getTextBoxes().get(0);
        String  text = textBoxShape1.getText();
        Color color = textBoxShape1.getFillColor();
        String  name = textBoxShape1.getName();
        System.out.println("テキスト内容："+ text + " 塗りつぶしの色：" + color + "名称："+ name);

        //最初のテキストボックスを取得し、塗りつぶされた画像を読む
        XlsTextBoxShape textBoxShape2 = (XlsTextBoxShape) sheet.getTextBoxes().get(1);
        BufferedImage image = textBoxShape2.getFill().getPicture();
        ImageIO.write(image,"png", new File("ExtractedImg.png"));
    }
}
```
テキストボックスを読んだ結果：
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/69b8ff94-1653-5327-d6de-d1feb25fd1c4.png)

###3.　テキストボックスを削除する
```
import com.spire.xls.*;
import com.spire.xls.core.spreadsheet.shapes.XlsTextBoxShape;

public class RemoveTextBox {
    public static void main(String[] args) {
        //テストドキュメントをロードする
        Workbook wb = new Workbook();
        wb.loadFromFile("AddTextBox.xlsx");

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

        //テキストボックスを取得し、削除する
        XlsTextBoxShape textBoxShape = (XlsTextBoxShape) sheet.getTextBoxes().get(0);
        textBoxShape.remove();

        //ドキュメントを保存する
        wb.saveToFile("RemoveTextBox.xlsx",FileFormat.Version2013);
        wb.dispose();
    }
}
```
テキストボックスを削除した結果：
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/cda2ea2f-e765-385e-7df5-b3591189b3e2.png)

今回のExcelテキストボックスに対する解説は以上です、最後まで読んでいただきありがとうございます。