本文介紹通過java程序在excel中操作形狀(圖形)的方法,包括:
1. 添加形狀(如設置形狀類型/位置/大小、形狀顏色填充(單色/漸變色/紋理/圖片填充)、形狀顯示或隱藏、形狀傾斜角度、添加文本到形狀、形狀陰影等)
2. 提取形狀中的文本和圖片
3. 刪除形狀(刪除指定或全部形狀)
工具:Spire.XLS for Java
Jar文件獲取及導入:通過官網下載或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("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("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();
}
}
運行程序後,可查看形狀刪除效果。
(本文完)