当然,我会为您创建一个基于这段代码的流程图,并提供中英双语说明。这个流程图将展示 ExWorksheet 类的主要功能和方法。
这个流程图展示了 ExWorksheet 类的主要结构和功能:
构造函数 (Constructors):
属性 (Properties):
方法 (Methods):
这个流程图展示了 ExWorksheet 类的主要功能和结构,有助于理解代码的整体架构和各个部分的关系。
public void Freeze()
{
this.ComObj.Application.ScreenUpdating = false;
}
public void UnFreeze()
{
this.ComObj.Application.ScreenUpdating = true;
}
这两个方法用于控制Excel的屏幕更新。
英文说明:
These methods control Excel’s screen updating.
public void SetSheet(XL.Worksheet comObject)
{
this.ComObj = comObject;
this.name = comObject.Name;
}
这个方法用于设置当前ExWorksheet对象的工作表。
英文说明:
This method sets the worksheet for the current ExWorksheet object.
public void Activate()
{
this.ComObj.Activate();
}
这个方法用于激活当前工作表,使其成为活动工作表。
英文说明:
This method activates the current worksheet, making it the active sheet.
public void Listen(GH_Component component, bool activate)
{
this.ComObj.Change -= (o) => { component.ExpireSolution(true); };
if(activate) this.ComObj.Change += (o) => { component.ExpireSolution(true); };
}
这个方法用于设置工作表变化的监听器。
英文说明:
This method sets up a listener for worksheet changes.
public void ClearSheet()
{
ExRange range = this.GetUsedRange();
range.ClearContent();
range.ClearFormat();
}
这个方法用于清除工作表的内容和格式。
英文说明:
This method clears the content and formatting of the worksheet.
这个方法有多个重载版本,用于将不同类型的数据写入工作表。我们以其中一个版本为例:
public ExRange WriteData(List<ExColumn> data, ExCell source)
{
// ... (代码略)
}
这个方法用于将列数据写入工作表。
英文说明:
This method writes column data to the worksheet.
public ExRange GetRange(ExCell start, ExCell extent)
{
XL.Range rng = this.ComObj.Range[start.ToString(), extent.ToString()];
return new ExRange(rng);
}
这个方法用于获取指定范围的单元格。
英文说明:
This method gets a specified range of cells.
public ExRange GetUsedRange()
{
return new ExRange(this.ComObj.UsedRange);
}
这个方法返回工作表中已使用的单元格范围。
英文说明:
This method returns the range of cells that are currently in use in the worksheet.
public void AddPicture(string name, string fileName, double x, double y, double scale)
{
// ... (代码略)
}
这个方法用于在工作表中添加图片。
英文说明:
This method adds a picture to the worksheet.
这些方法共同构成了ExWorksheet类的核心功能,允许用户以编程方式操作Excel工作表。通过这些方法,可以实现数据写入、范围操作、图片插入等多种功能,为Excel自动化提供了强大的工具。
public class ExWorksheet
{
// ComObj 存储 Excel 工作表的 COM 对象
public XL.Worksheet ComObj { get; private set; }
// name 存储工作表的名称
public string name { get; private set; }
// 构造函数,初始化 ExWorksheet 对象
public ExWorksheet(XL.Worksheet comObject)
{
this.SetSheet(comObject);
}
// 暂停屏幕更新,提高大量数据操作时的性能
public void Freeze()
{
this.ComObj.Application.ScreenUpdating = false;
}
// 恢复屏幕更新,通常在完成数据操作后调用
public void UnFreeze()
{
this.ComObj.Application.ScreenUpdating = true;
}
// 设置当前 ExWorksheet 对象的工作表
public void SetSheet(XL.Worksheet comObject)
{
this.ComObj = comObject;
this.name = comObject.Name;
}
// 激活当前工作表,使其成为活动工作表
public void Activate()
{
this.ComObj.Activate();
}
// 设置工作表变化的监听器
public void Listen(GH_Component component, bool activate)
{
// 移除现有的事件处理器,防止重复添加
this.ComObj.Change -= (o) => { component.ExpireSolution(true); };
// 如果 activate 为 true,添加新的事件处理器
if(activate) this.ComObj.Change += (o) => { component.ExpireSolution(true); };
}
// 清除工作表的内容和格式
public void ClearSheet()
{
ExRange range = this.GetUsedRange();
range.ClearContent(); // 清除内容
range.ClearFormat(); // 清除格式
}
// 将列数据写入工作表
public ExRange WriteData(List<ExColumn> data, ExCell source)
{
// ... (此处省略具体实现,可以根据需要添加详细注释)
}
// 获取指定范围的单元格
public ExRange GetRange(ExCell start, ExCell extent)
{
XL.Range rng = this.ComObj.Range[start.ToString(), extent.ToString()];
return new ExRange(rng);
}
// 获取工作表中已使用的单元格范围
public ExRange GetUsedRange()
{
return new ExRange(this.ComObj.UsedRange);
}
// 在工作表中添加图片
public void AddPicture(string name, string fileName, double x, double y, double scale)
{
// 检查是否存在同名图片,如果存在则删除
foreach (XL.Shape shape in this.ComObj.Shapes)
{
if (shape.Name == name)
{
shape.Delete();
break;
}
}
// 添加新图片
XL.Shape pic = this.ComObj.Shapes.AddPicture(fileName,
Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoCTrue,
x, y, -1, -1);
// 设置图片属性
pic.Name = name;
pic.ScaleWidth(scale, Microsoft.Office.Core.MsoTriState.msoTrue);
pic.ScaleHeight(scale, Microsoft.Office.Core.MsoTriState.msoTrue);
}
}
这段代码定义了一个 ExWorksheet
类,用于封装 Excel 工作表的操作。以下是每个方法的详细说明:
构造函数:初始化 ExWorksheet
对象,设置工作表。
Freeze()
和 UnFreeze()
:控制 Excel 的屏幕更新,用于优化性能。
SetSheet()
:设置当前 ExWorksheet
对象的工作表,更新内部引用和名称。
Activate()
:激活当前工作表,使其成为活动工作表。
Listen()
:设置工作表变化的监听器,用于在 Grasshopper 中响应 Excel 的变化。
ClearSheet()
:清除工作表的内容和格式。
WriteData()
:将列数据写入工作表(具体实现未显示)。
GetRange()
:获取指定范围的单元格。
GetUsedRange()
:获取工作表中已使用的单元格范围。
AddPicture()
:在工作表中添加图片,包括删除同名图片和设置新图片属性。
这个类提供了一系列方法来操作 Excel 工作表,包括基本的工作表管理、数据写入、范围操作和图片插入等功能。通过这些方法,可以实现对 Excel 的程序化控制,为自动化处理 Excel 文档提供了强大的工具。