有时,您可能需要在 Excel 中对多个形状执行特定操作,例如添加样式、调整大小或移动它们。对形状进行分组可以帮助您更轻松、更高效地完成此任务。对形状进行分组后,它们将被视为单个实体并且可以同时进行操作。在本文中,您将学习如何使用 Spire.XLS for .NET 在 C# 和 VB.NET 中以编程方式对 Excel 中的形状进行分组或取消分组。
安装 Spire.XLS for .NET
首先,您需要添加 Spire.XLS for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.XLS
对 Excel 中的形状进行分组
要对 Excel 工作表中的某些形状进行分组,您需要使用 Worksheet.GroupShapeCollection 属性返回一个 GroupShapeCollection 对象,然后调用 GroupShapeCollection.Group() 方法。详细步骤如下:
- 初始化 Workbook 类的实例。
- 通过 Workbook.Worksheets[int] 属性按索引获取第一个工作表。
- 使用 Worksheet.PrstGeomShapes.AddPrstGeomShape(int, int, int, int, PrstGeomShapeType) 方法向工作表中的特定行和列添加多个形状。
- 通过 Worksheet.GroupShapeCollection 属性获取工作表的组形状集合。
- 使用 GroupShapeCollection.Group(IShape[]) 方法对形状进行分组。
- 使用 Workbook.SaveToFile(string) 方法保存结果文档。
- C#
- VB.NET
using Spire.Xls;
using Spire.Xls.Core;
using Spire.Xls.Core.MergeSpreadsheet.Collections;
using System.Drawing;
namespace GroupShapes
{
class Program
{
static void Main(string[] args)
{
//初始化Workbook类的实例
Workbook workbook = new Workbook();
//获取第一个工作表
Worksheet worksheet = workbook.Worksheets[0];
//添加多个形状
IPrstGeomShape shape1 = worksheet.PrstGeomShapes.AddPrstGeomShape(3, 3, 65, 50, PrstGeomShapeType.RoundRect);
shape1.Fill.FillType = ShapeFillType.SolidColor;
shape1.Fill.ForeColor = Color.Yellow;
shape1.Line.Weight = 0.1;
IPrstGeomShape shape2 = worksheet.PrstGeomShapes.AddPrstGeomShape(7, 3, 65, 50, PrstGeomShapeType.Ribbon);
shape2.Fill.FillType = ShapeFillType.SolidColor;
shape2.Fill.ForeColor = Color.Purple;
shape2.Line.Weight = 0.1;
IPrstGeomShape shape3 = worksheet.PrstGeomShapes.AddPrstGeomShape(3, 5, 65, 50, PrstGeomShapeType.Cloud);
shape3.Fill.FillType = ShapeFillType.SolidColor;
shape3.Fill.ForeColor = Color.LightGreen;
shape3.Line.Weight = 0.1;
IPrstGeomShape shape4 = worksheet.PrstGeomShapes.AddPrstGeomShape(7, 5, 65, 50, PrstGeomShapeType.Ellipse);
shape4.Fill.FillType = ShapeFillType.SolidColor;
shape4.Fill.ForeColor = Color.LightSkyBlue;
shape4.Line.Weight = 0.1;
//对形状进行分组
GroupShapeCollection groupShapeCollection = worksheet.GroupShapeCollection;
groupShapeCollection.Group(new IShape[] { shape1, shape2, shape3, shape4 });
//保存结果文档
workbook.SaveToFile("GroupShapes.xlsx", ExcelVersion.Version2013);
}
}
}
Imports Spire.Xls
Imports Spire.Xls.Core
Imports Spire.Xls.Core.MergeSpreadsheet.Collections
Imports System.Drawing
Namespace GroupShapes
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'初始化Workbook类的实例
Dim workbook As Workbook = New Workbook()
'获取第一个工作表
Dim worksheet As Worksheet = workbook.Worksheets(0)
'添加多个形状
Dim shape1 As IPrstGeomShape = worksheet.PrstGeomShapes.AddPrstGeomShape(3, 3, 65, 50, PrstGeomShapeType.RoundRect)
shape1.Fill.FillType = ShapeFillType.SolidColor
shape1.Fill.ForeColor = Color.Yellow
shape1.Line.Weight = 0.1
Dim shape2 As IPrstGeomShape = worksheet.PrstGeomShapes.AddPrstGeomShape(7, 3, 65, 50, PrstGeomShapeType.Ribbon)
shape2.Fill.FillType = ShapeFillType.SolidColor
shape2.Fill.ForeColor = Color.Purple
shape2.Line.Weight = 0.1
Dim shape3 As IPrstGeomShape = worksheet.PrstGeomShapes.AddPrstGeomShape(3, 5, 65, 50, PrstGeomShapeType.Cloud)
shape3.Fill.FillType = ShapeFillType.SolidColor
shape3.Fill.ForeColor = Color.LightGreen
shape3.Line.Weight = 0.1
Dim shape4 As IPrstGeomShape = worksheet.PrstGeomShapes.AddPrstGeomShape(7, 5, 65, 50, PrstGeomShapeType.Ellipse)
shape4.Fill.FillType = ShapeFillType.SolidColor
shape4.Fill.ForeColor = Color.LightSkyBlue
shape4.Line.Weight = 0.1
'对形状进行分组
Dim groupShapeCollection As GroupShapeCollection = worksheet.GroupShapeCollection
groupShapeCollection.Group(New IShape() {shape1, shape2, shape3, shape4})
'保存结果文档
workbook.SaveToFile("GroupShapes.xlsx", ExcelVersion.Version2013)
End Sub
End Class
End Namespace
对 Excel 中的形状取消分组
如果要取消 Excel 工作表中已分组的形状,您可以使用 GroupShapeCollection. UnGroupAll() 方法。取消形状分组后,则可以单独操作它们。详细步骤如下:
- 初始化 Workbook 类的实例。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 通过 Workbook.Worksheets[int] 属性通过其索引获取特定工作表。
- 通过 Worksheet.GroupShapeCollection 属性获取工作表的组形状集合。
- 使用 GroupShapeCollection.UnGroupAll() 方法取消所有分组的形状。
- 使用 Workbook.SaveToFile() 方法保存结果文档。
- C#
- VB.NET
using Spire.Xls;
using Spire.Xls.Core.MergeSpreadsheet.Collections;
namespace UngroupShapes
{
class Program
{
static void Main(string[] args)
{
//初始化Workbook类的实例
Workbook workbook = new Workbook();
workbook.LoadFromFile("GroupShapes.xlsx");
//获取特定工作表
Worksheet worksheet = workbook.Worksheets[0];
//取消分组工作表中的分组形状
GroupShapeCollection groupShapeCollection = worksheet.GroupShapeCollection;
groupShapeCollection.UnGroupAll();
//保存结果文档
workbook.SaveToFile("UnGroupShapes.xlsx", ExcelVersion.Version2013);
}
}
}
Imports Spire.Xls
Imports Spire.Xls.Core.MergeSpreadsheet.Collections
Namespace UngroupShapes
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'初始化Workbook类的实例
Dim workbook As Workbook = New Workbook()
workbook.LoadFromFile("GroupShapes.xlsx")
'获取特定工作表
Dim worksheet As Worksheet = workbook.Worksheets(0)
'取消分组工作表中的分组形状
Dim groupShapeCollection As GroupShapeCollection = worksheet.GroupShapeCollection
groupShapeCollection.UnGroupAll()
'保存结果文档
workbook.SaveToFile("UnGroupShapes.xlsx", ExcelVersion.Version2013)
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。