この記事では、次のような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(); } }
プログラムを実行した後、図形の削除結果を確認できます。
今回の図形を追加、読み取り、削除する方法はここまででした、最後まで読んでいただきありがとうございます。