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

この記事では、Javaプログラムを使用してExcelにテキストボックスを追加する方法を紹介します。テキストボックスを追加する時、テキストの追加、テキストの方向の設定、テキストの配置、テキストボックスのサイズ、位置、塗りつぶしの色/塗りつぶしの画像、テキストボックスを設定できます。回転角度、テキストボックス名、選択可能なテキスト、テキストボックスの非表示または表示、およびその他の操作も全てできます。

既存のテキストボックスの場合、テキストボックス内のテキストの読み取り、色の塗りつぶし、画像の塗りつぶし、テキストボックス名、不要なテキストボックスの削除などを行うことができます。以下は、例を通して特定の実装方法を示します。

 

使用ツール:Free Spire.XLS for Java(無料版)

Jarの取得とインポート:公式Webサイトからパッケージをダウンロードし、libフォルダーの下のjarを解凍してjavaプログラムにインポートします。インポートした結果は、次のとおりです。

f:id:uha_noki:20211221114102p:plain

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("画像を追加してテキストボックス2に入力する");

        //テキストボックスを埋めるために画像を追加する
       
((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();
    }
}

テキストボックスを追加した結果

f:id:uha_noki:20211221114333p:plain

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"));
    }
}

テキストボックスを読んだ結果:

f:id:uha_noki:20211221114354p:plain

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();
    }
}

テキストボックスを削除した結果

f:id:uha_noki:20211221114408p:plain

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