本文介绍通过使用spire.xls for java在excel中操作形状的方法,包括:
- 添加形状(如设置形状类型/位置/大小、形状颜色填充(单色/渐变色/纹理/图片填充)、形状显示或隐藏、形状倾斜角度、添加文本到形状、形状阴影等)
- 读取形状中的文本和图片
- 删除形状(删除指定或全部形状)
添加形状
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();
}
}
形状添加效果:
读取形状中的文本和图片
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"));
}
}
文本、图片读取结果:
删除形状
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();
}
}
形状删除效果: