[]
        
(Showing Draft Content)

形状和图片

GcExcel Java 允许用户在电子表格的单元格上插入图形对象,例如形状和图片。

您可以根据特定要求绘制并插入所选的箭头,线条,图片和常规形状。

GcExcel 允许用户在工作表的单元格上插入和自定义形状和图片。您可以通过访问属性和方法与形状和图像工作 IShapes 接口的和 IShape 接口

使用 GcExcel 库,您可以创建不同的形状类型,例如连接器,形状和图片。

连接器

需要连接或断开两个常规形状时,可以使用连接器。在 GcExcel 中,可以使用 addConnector 方法在工作表的特定坐标或特定范围添加连接器。还可以使用 IConnectorFormat 接口的 BeginConnect 方法,EndConnect 方法,BeginDisconnect 方法和的 EndDisconnect 方法到连接器的端部连接和分离到其他形状。

请参考以下示例代码,以使用连接器格式连接常规形状。可以按像素位置来添加连接器,也可以将连接器直接添加到指定范围中。

// To configure the connector shape
IShape ShapeBegin = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 1, 1, 100, 100);
IShape EndBegin = worksheet.getShapes().addShape(AutoShapeType.Rectangle, 200, 200, 100, 100);
IShape ConnectorShape = worksheet.getShapes().addConnector(ConnectorType.Straight, 1, 1, 101, 101);
ConnectorShape.Width=10;
        
// To detach the ends of the connector to other shapes
ConnectorShape.getConnectorFormat().beginConnect(ShapeBegin, 3);
ConnectorShape.getConnectorFormat().endConnect(EndBegin, 0);
// Add shape using range
IShape rectangle3 = worksheet.getShapes.addShape(AutoShapeType.Rectangle, worksheet.Range["B12"]);
IShape rectangle4 = worksheet.getShapes.addShape(AutoShapeType.Rectangle, worksheet.Range["D12"]);

//Add connector for rectangle3 and rectangle4, by adding connector directly to a range
IShape rangeConnectorShape = worksheet.getShapes().addConnector(ConnectorType.Curve, worksheet.Range["B12:D12"]); 

注意:使用连接符格式的一个限制是,可以添加连接符来连接两个常规形状并将其导出,但只有在将形状拖到电子表格中后,才会显示连接符。

形状

形状是图形对象,并且是Shapes集合的成员。在GcExcel中,“形状”集合表示指定工作表中的形状集合。将所有图形对象(包括图表,注释,图片,切片器,常规形状和形状组)定义为“形状”。

也可以使用IShapes界面中提供的不同方法,将名称分配给形状,可以是图表,图片,连接器或任何自动形状。通过为形状分配名称,可以直接访问它,并且可以修改其属性,而不必遍历所有形状的列表。

要在GcExcel工作表中添加形状,可以使用 IShapes 接口的 addShape 方法。该方法提供重载,允许您在指定位置或指定范围添加各种形状。

请参考以下示例代码,在特定位置和特定范围添加形状:

  // create a new workbook
Workbook workbook = new Workbook();
// Fetch default worksheet
IWorksheet worksheet = workbook.getWorksheets().get(0);

 // Create shape with custom name at a specific position
 IShape shape = worksheet.getShapes().addShape("Balloon", AutoShapeType.Balloon, 50, 50, 100, 200);

 // Add shape to a range
//IShape balloonShape = worksheet.getShapes().addShape(AutoShapeType.Rectangle, worksheet.setRange["F5:I10"]);
 
// save to an excel file
workbook.save("BalloonShape.xlsx");

请参考以下示例代码,为图表分配名称。

       // create a new workbook
     Workbook workbook = new Workbook();
     // Fetch default worksheet
     IWorksheet worksheet = workbook.getWorksheets().get(0);
     IShape shape = worksheet.getShapes().addChart("Area Chart with CustomName", ChartType.Area, 250, 20, 360, 230);
     worksheet.getRange("A1:C13").setValue(new Object[][] {
    { null, "Blue Series", "Orange Series" },
    { "Jan", 0, 59.1883603948205 },
    { "Feb", 44.6420211591501, 52.2280901938606 },
    { "Mar", 45.2174930051225, 49.8093056416248 },
    { "Apr", 62, 37.3065749226828 },
    { "May", 53, 34.4312192530766 },
    { "Jun", 31.8933622049831, 69.7834561753736 },
    { "Jul", 41.7930895085093, 63.9418103906982 },
    { "Aug", 73, 57.4049534494926 },
    { "Sep", 49.8773891668518, 33 },
    { "Oct", 50, 74 },
    { "Nov", 54.7658428630216, 22.9587876597096 },
    { "Dec", 32, 54 },
});

     //Get chart by custom name
     IShape areaChart = worksheet.getShapes().get("Area Chart with CustomName");
     areaChart.getChart().getSeriesCollection().add(worksheet.getRange("A1:C13"), RowCol.Columns);
     areaChart.getChart().getChartTitle().setText("Area Chart");

     //save to an excel file
     workbook.save("ChartName.xlsx");

图片

您可以使用IShapes界面的 AddPicture 方法在电子表格的单元格上插入图片。该方法允许您在特定位置或特定范围添加图片。GcExcel中的 IPictureFormat 接口允许用户在使用电子表格时自定义图片并设置其格式。

在GcExcel中处理图片时,请参考以下示例代码:

// Add a picture through stream
string path = @"Images\flower.jpg";
        
FileStream stream = System.IO.File.Open(path, FileMode.Open);
IShape picture = worksheet.Shapes.AddPicture(stream, ImageType.JPG, 480, 10, 100, 100);

// Add a picture through file at specific location
// IShape picture = worksheet.getShapes().addPicture(@"Images\flower.jpg", 480, 10, 100, 100);
        
// Add a picture to a specific range 
// IShape pictureInRange = worksheet.getShapes().addPicture("flower.jpg", worksheet.Range["D3:F5"]);

// Fill the inserted picture
picture.getFill().solid();
picture.getFill().getColor().setRGB(Color.AliceBlue);
        
//Customize the inserted picture
picture.getPictureFormat().getCrop().setPictureWidth(80);

请参考以下示例代码为图片分配名称。

      // create a new workbook
Workbook workbook = new Workbook();
// Fetch default worksheet
IWorksheet worksheet = workbook.getWorksheets().get(0);

// Create shape with custom name
IShape shape = worksheet.getShapes().addPicture("Custom Name to Image", "image.png", 10, 10, 250, 150);

// Get the picture name
System.out.println(shape.getName().toString());

// save to an excel file
workbook.save("PictureName.xlsx");

要查看运行的代码,请参阅将形状添加到范围将图片添加到范围演示。

在GcExcel中使用形状和图片包含以下使用方式: