[]
在GcExcel中,您可以通过三种不同的方式自定义形状格式。这包括:使用IFillFormat接口的属性和方法为插入的形状设置填充格式;使用ILineFormat接口的属性和方法配置形状的线条;以及使用IThreeDFormat接口的属性和方法为形状应用3D格式。
要为形状设置纯色填充,首先需要使用IFillFormat接口的Solid方法指定填充格式,然后通过setRGB和setTransparency分别设置形状的填充颜色和透明度。
参考以下示例代码为形状设置纯色填充:
// 纯色填充
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Parallelogram, 1, 1, 200, 100);
shape.getFill().solid();
shape.getFill().getColor().setRGB(Color.GetRed());使用渐变填充时,您可以通过IFillFormat接口的oneColorGradient方法、twoColorGradient方法或presetGradient方法,将形状填充设置为渐变填充。
设置渐变填充后,您可以通过IFillFormat接口的getGradientStops方法、setRotateWithObject方法和setGradientAngle方法,插入、删除或更改渐变停点,配置填充样式随形状旋转的属性以及渐变填充的角度。
GcExcel支持四种渐变填充类型,即线性、径向、矩形和路径。默认情况下,应用的是“线性”渐变填充。
参考以下示例代码,使用presetGradient方法为形状设置渐变填充:
// 渐变填充
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Heart, 1, 1, 100, 100);
shape.getFill().presetGradient(GradientStyle.Vertical, 3, PresetGradientType.Silver);
shape.getFill().setRotateWithObject(false);参考以下示例代码,使用twoColorGradient方法为形状设置渐变填充:
// 初始化工作簿
Workbook workbook = new Workbook();
// 获取默认工作表
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 添加一个形状
IShape rectangle = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 20, 20, 300, 100);
// 初始化双色渐变填充
rectangle.getFill().twoColorGradient(GradientStyle.Horizontal, 1);
// 保存为Excel文件
workbook.save("LineGradient.xlsx");要设置径向、矩形或路径渐变填充,除了使用twoColorGradient方法外,还需要设置PathShapeType。
参考以下示例代码为形状设置“径向”渐变填充:
// 初始化工作簿
Workbook workbook = new Workbook();
// 获取默认工作表
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 添加一个形状
IShape rectangle = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 20, 20, 300, 100);
// 初始化双色渐变填充
rectangle.getFill().twoColorGradient(GradientStyle.FromCenter, 1);
rectangle.getFill().getGradientPathType().equals(PathShapeType.Radial);
// 保存为Excel文件
workbook.save("RadialGradient.xlsx");使用图案填充时,您可以通过IFillFormat接口的patterned方法,将形状填充设置为图案填充。
此外,您还可以通过IColorFormat接口的setObjectThemeColor方法和IFillFormat接口的getPatternColor方法,配置背景颜色和图案颜色。
参考以下示例代码为形状设置图案填充:
// 图案填充
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 1, 1, 100, 100);
shape.getFill().patterned(PatternType.Percent10);
shape.getFill().getColor().setObjectThemeColor(ThemeColor.Accent2);
shape.getFill().getPatternColor().setObjectThemeColor(ThemeColor.Accent6);在图片填充中,您可以使用IShapes接口的addShape方法插入要填充图片的形状。
同时,您可以通过IPictureFormat接口的方法,配置图片格式的特性,如图片高度、图片宽度、亮度、对比度、重新着色、x轴和y轴偏移等。
参考以下示例代码为形状设置图片填充:
// 添加图片类型的形状
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 20, 20, 100, 100);
String path = "C:\\Users\\GPCTAdmin\\Pictures\\cat.jpg";
try {
FileInputStream stream = new FileInputStream(path);
shape.getFill().userPicture(stream, ImageType.JPG);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 为图片重新着色
shape.getPictureFormat().setColorType(PictureColorType.Grayscale);
// 设置图片的亮度和对比度
shape.getPictureFormat().setBrightness(0.6);
shape.getPictureFormat().setContrast(0.3);
// 设置指定图片的高度、宽度、x轴偏移和y轴偏移
shape.getPictureFormat().getCrop().setPictureOffsetX(10);
shape.getPictureFormat().getCrop().setPictureOffsetY(-5);
shape.getPictureFormat().getCrop().setPictureWidth(120);
shape.getPictureFormat().getCrop().setPictureHeight(80);使用纹理填充时,您可以通过IFillFormat接口的presetTextured方法,用所选纹理填充形状。
此外,您还可以通过setTextureAlignment方法、setTextureHorizontalScale方法、setTextureOffsetX方法、setTextureOffsetY方法和setTextureVerticalScale方法,配置纹理的布局。
参考以下示例代码为形状设置纹理填充:
// 纹理填充
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 1, 1, 100, 100);
shape.getFill().presetTextured(PresetTexture.Canvas);
shape.getFill().setTextureAlignment(TextureAlignment.Center);
shape.getFill().setTextureOffsetX(2.5);
shape.getFill().setTextureOffsetY(3.2);
shape.getFill().setTextureHorizontalScale(0.9);
shape.getFill().setTextureVerticalScale(0.2);
shape.getFill().setTransparency(0.5);线条是形状周围的一种边框。您可以使用ILineFormat接口的属性和方法,为电子表格单元格中插入的形状创建线条。
参考以下示例代码配置形状的线条和线条样式:
// 设置形状的线条样式
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 1, 1, 100, 100);
shape.getLine().setDashStyle(LineDashStyle.Dash);
shape.getLine().setStyle(LineStyle.Single);
shape.getLine().setWeight(2);
shape.getLine().getColor().setObjectThemeColor(ThemeColor.Accent6);
shape.getLine().setTransparency(0.3);形状的线条也支持纯色填充、渐变填充和图案填充,其使用方法与形状填充类似。
GcExcel Java允许用户通过配置形状绕x、y和z轴的旋转角度,为插入的形状设置三维布局。这可以通过IThreeDFormat接口的setRotationX方法、setRotationY方法和setRotationZ方法实现。
参考以下示例代码为嵌入的形状应用3D格式:
// 设置形状绕x、y、z轴的旋转角度
IShape shape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 1, 1, 100, 100);
shape.getThreeD().setRotationX(50);
shape.getThreeD().setRotationY(20);
shape.getThreeD().setRotationZ(30);
shape.getThreeD().setDepth(7);
shape.getThreeD().setZ(20);