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