この記事では、次のようなJavaプログラムを使用してExcelで図形(グラフィックス)を操作する方法を紹介します。

 

1.図形を追加します(図形の種類/位置/サイズの設定、図形の塗りつぶし(単色/グラデーションの色/テクスチャ/画像の塗りつぶし)、図形の表示または非表示、図形の傾斜角度、図形へのテキストの追加、図形の影など)

 

2.図形からテキストと画像を抽出します

 

3.図形を削除します(指定された図形またはすべての図形を削除します)

 

ツール:Spire.XLS for Java

 

Jarファイルの取得とインポート:公式WebサイトまたはMavenからダウンロードしてインポートします。インポート結果は次のとおりです。

Javaコード一覧

 

【例1】図形を追加する

import com.spire.xls.*;
import com.spire.xls.core.IPrstGeomShape;
import java.awt.*;

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

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

        //楕円形を追加する
       
IPrstGeomShape ellipse = sheet.getPrstGeomShapes().addPrstGeomShape(3,4,125,200,PrstGeomShapeType.Ellipse);
        ellipse.getFill().setFillType(ShapeFillType.SolidColor);//単色塗りつぶし
       
ellipse.getFill().setForeColor(new Color(180,125,208));
        ellipse.setRotation(30);//図形の回転角度
       
ellipse.setText("楕円形にテキストを追加する");//図形にテキストを追加する

       
//星の図形を追加する
       
IPrstGeomShape star = sheet.getPrstGeomShapes().addPrstGeomShape(3,8,180,200,PrstGeomShapeType.Star5);
        star.getFill().setFillType(ShapeFillType.Gradient);//グラデーション塗りつぶし
       
star.getFill().setGradientColorType(GradientColorType.Preset);
        star.getFill().setForeColor(Color.orange);

        //雲の図形を追加する
       
IPrstGeomShape cloud = sheet.getPrstGeomShapes().addPrstGeomShape(12,4,175,200,PrstGeomShapeType.Cloud);
        cloud.getFill().setFillType(ShapeFillType.Texture);//テクスチャ塗りつぶし
       
cloud.getFill().setTexture(GradientTextureType.WhiteMarble);
        cloud.setVisible(true);//図形が表示されるかどうかを設定する
       
//クラウドシャドウを設定する
       
cloud.getShadow().setAngle(90);
        cloud.getShadow().setDistance(10);
        cloud.getShadow().setSize(100);
        cloud.getShadow().setColor(Color.GRAY);
        cloud.getShadow().setBlur(30);
        cloud.getShadow().setTransparency(1);
        cloud.getShadow().hasCustomStyle();

        //長方形を追加する
       
IPrstGeomShape rect = sheet.getPrstGeomShapes().addPrstGeomShape(15,8,125,200,PrstGeomShapeType.Rect);
        rect.getFill().customPicture("tp.png");//画像の塗りつぶしを読み込む
       
rect.setName("Shape4");//図形を命名する

       
//ドキュメントを保存する
       
wb.saveToFile("AddShape.xlsx");
        wb.dispose();
    }
}

追加した結果:

 

【例2】図形の中の文字や絵を読む

import com.spire.xls.*;

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

public class Extract {
    public static void main(String[] args) throws IOException {
        //ドキュメントをロードする
        Workbook wb = new Workbook();
        wb.loadFromFile("C:\\Users\\Administrator\\IdeaProjects\\TEST\\AddShape.xlsx");

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

        //指定された図形のテキストを取得する
        String text = sheet.getPrstGeomShapes().get(0).getText();
        System.out.println(text);

        //指定された形で写真を取得する
        BufferedImage image = sheet.getPrstGeomShapes().get(3).getFill().getPicture();
        ImageIO.write(image,"png",new File("ExtractedImage.png"));
    }
}

文字や絵を読む結果:

 

【例3】図形を削除する

import com.spire.xls.*;
public class RemoveShape {
    public static void main(String[] args) {
        //ドキュメントをロードする
        Workbook wb = new Workbook();
        wb.loadFromFile("C:\\Users\\Administrator\\IdeaProjects\\TEST\\AddShape.xlsx");

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

        //指定された図形を取得し、削除する
        //sheet.getPrstGeomShapes().get(1).remove();//インデックス値による取得と削除する
        // sheet.getPrstGeomShapes().get("Shape4").remove();//形状名で取得および削除する

        //すべてのグラフィックを削除する
        for (int i = sheet.getPrstGeomShapes().getCount()-1; i >= 0; i--)
        {
            sheet.getPrstGeomShapes().get(i).remove();
        }

        //ドキュメントを保存する
        wb.saveToFile("RemoveShape.xlsx");
        wb.dispose();
    }
}

プログラムを実行した後、図形の削除結果を確認できます。

今回の図形を追加、読み取り、削除する方法はここまででした、最後まで読んでいただきありがとうございます。