欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【C#】【EXCEL】Bumblebee/Classes/ExWorksheet.cs

【C#】【EXCEL】Bumblebee/Classes/ExWorksheet.cs

2024/10/24 18:24:59 来源:https://blog.csdn.net/hmywillstronger/article/details/141534909  浏览:    关键词:【C#】【EXCEL】Bumblebee/Classes/ExWorksheet.cs

Bumblebee/Classes/ExWorksheet.cs

Flow diagram

当然,我会为您创建一个基于这段代码的流程图,并提供中英双语说明。这个流程图将展示 ExWorksheet 类的主要功能和方法。

ExWorksheet 类
ExWorksheet Class
构造函数
Constructors
属性
Properties
方法
Methods
默认构造函数
Default Constructor
从 ExRange 构造
Construct from ExRange
从 XL.Worksheet 构造
Construct from XL.Worksheet
复制构造函数
Copy Constructor
Name
名称
Workbook
工作簿
ParentApp
父应用程序
ActiveWorksheet
获取活动工作表
Freeze/UnFreeze
冻结/解冻屏幕更新
SetSheet
设置工作表
Activate
激活工作表
Listen
监听变化
ClearSheet
清除工作表内容
WriteData
写入数据
GetRange
获取单元格范围
GetUsedRange
获取已使用范围
AddPicture
添加图片
写入 ExRow 数据
写入 ExColumn 数据
写入 GH_String 数据
通过起始和结束单元格获取
通过范围字符串获取

这个流程图展示了 ExWorksheet 类的主要结构和功能:

  1. 构造函数 (Constructors):

    • 默认构造函数 (Default Constructor)
    • 从 ExRange 构造 (Construct from ExRange)
    • 从 XL.Worksheet 构造 (Construct from XL.Worksheet)
    • 复制构造函数 (Copy Constructor)
  2. 属性 (Properties):

    • Name (名称)
    • Workbook (工作簿)
    • ParentApp (父应用程序)
  3. 方法 (Methods):

    • ActiveWorksheet (获取活动工作表)
    • Freeze/UnFreeze (冻结/解冻屏幕更新)
    • SetSheet (设置工作表)
    • Activate (激活工作表)
    • Listen (监听变化)
    • ClearSheet (清除工作表内容)
    • WriteData (写入数据):
      • 写入 ExRow 数据
      • 写入 ExColumn 数据
      • 写入 GH_String 数据
    • GetRange (获取单元格范围):
      • 通过起始和结束单元格获取
      • 通过范围字符串获取
    • GetUsedRange (获取已使用范围)
    • AddPicture (添加图片)

这个流程图展示了 ExWorksheet 类的主要功能和结构,有助于理解代码的整体架构和各个部分的关系。

Description

  1. Freeze() 和 UnFreeze() 方法
public void Freeze()
{this.ComObj.Application.ScreenUpdating = false;
}public void UnFreeze()
{this.ComObj.Application.ScreenUpdating = true;
}

这两个方法用于控制Excel的屏幕更新。

  • Freeze(): 暂停屏幕更新,可以提高大量数据操作时的性能。
  • UnFreeze(): 恢复屏幕更新,通常在完成数据操作后调用。

英文说明:
These methods control Excel’s screen updating.

  • Freeze(): Pauses screen updating to improve performance during large data operations.
  • UnFreeze(): Resumes screen updating, typically called after data operations are complete.
  1. SetSheet() 方法
public void SetSheet(XL.Worksheet comObject)
{this.ComObj = comObject;this.name = comObject.Name;
}

这个方法用于设置当前ExWorksheet对象的工作表。

  • 它接受一个XL.Worksheet对象作为参数。
  • 更新内部的ComObj引用和name属性。

英文说明:
This method sets the worksheet for the current ExWorksheet object.

  • It takes an XL.Worksheet object as a parameter.
  • Updates the internal ComObj reference and name property.
  1. Activate() 方法
public void Activate()
{this.ComObj.Activate();
}

这个方法用于激活当前工作表,使其成为活动工作表。

英文说明:
This method activates the current worksheet, making it the active sheet.

  1. Listen() 方法
public void Listen(GH_Component component, bool activate)
{this.ComObj.Change -= (o) => { component.ExpireSolution(true); };if(activate) this.ComObj.Change += (o) => { component.ExpireSolution(true); };
}

这个方法用于设置工作表变化的监听器。

  • 它接受一个Grasshopper组件和一个布尔值作为参数。
  • 如果activate为true,则添加一个事件处理器来监听工作表的变化。
  • 当工作表发生变化时,会使Grasshopper组件的解决方案过期。

英文说明:
This method sets up a listener for worksheet changes.

  • It takes a Grasshopper component and a boolean as parameters.
  • If activate is true, it adds an event handler to listen for worksheet changes.
  • When the worksheet changes, it expires the Grasshopper component’s solution.
  1. ClearSheet() 方法
public void ClearSheet()
{ExRange range = this.GetUsedRange();range.ClearContent();range.ClearFormat();
}

这个方法用于清除工作表的内容和格式。

  • 获取已使用的单元格范围。
  • 清除该范围内的内容和格式。

英文说明:
This method clears the content and formatting of the worksheet.

  • Gets the used range of cells.
  • Clears both content and formatting within that range.
  1. WriteData() 方法

这个方法有多个重载版本,用于将不同类型的数据写入工作表。我们以其中一个版本为例:

public ExRange WriteData(List<ExColumn> data, ExCell source)
{// ... (代码略)
}

这个方法用于将列数据写入工作表。

  • 接受一个ExColumn列表和一个起始单元格作为参数。
  • 将数据转换为二维数组。
  • 根据数据类型(文本或数字)设置单元格格式。
  • 写入数据并返回写入的单元格范围。

英文说明:
This method writes column data to the worksheet.

  • Takes a list of ExColumn and a starting cell as parameters.
  • Converts data to 2D arrays.
  • Sets cell formats based on data type (text or numeric).
  • Writes the data and returns the range of cells written.
  1. GetRange() 方法
public ExRange GetRange(ExCell start, ExCell extent)
{XL.Range rng = this.ComObj.Range[start.ToString(), extent.ToString()];return new ExRange(rng);
}

这个方法用于获取指定范围的单元格。

  • 接受起始和结束单元格作为参数。
  • 返回一个ExRange对象,表示指定的单元格范围。

英文说明:
This method gets a specified range of cells.

  • Takes start and end cells as parameters.
  • Returns an ExRange object representing the specified cell range.
  1. GetUsedRange() 方法
public ExRange GetUsedRange()
{return new ExRange(this.ComObj.UsedRange);
}

这个方法返回工作表中已使用的单元格范围。

英文说明:
This method returns the range of cells that are currently in use in the worksheet.

  1. AddPicture() 方法
public void AddPicture(string name, string fileName, double x, double y, double scale)
{// ... (代码略)
}

这个方法用于在工作表中添加图片。

  • 接受图片名称、文件名、位置和缩放比例作为参数。
  • 如果存在同名图片,先删除旧图片。
  • 添加新图片并设置其属性。

英文说明:
This method adds a picture to the worksheet.

  • Takes picture name, file name, position, and scale as parameters.
  • Removes any existing picture with the same name.
  • Adds the new picture and sets its properties.

这些方法共同构成了ExWorksheet类的核心功能,允许用户以编程方式操作Excel工作表。通过这些方法,可以实现数据写入、范围操作、图片插入等多种功能,为Excel自动化提供了强大的工具。

Code

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 工作表的操作。以下是每个方法的详细说明:

  1. 构造函数:初始化 ExWorksheet 对象,设置工作表。

  2. Freeze()UnFreeze():控制 Excel 的屏幕更新,用于优化性能。

  3. SetSheet():设置当前 ExWorksheet 对象的工作表,更新内部引用和名称。

  4. Activate():激活当前工作表,使其成为活动工作表。

  5. Listen():设置工作表变化的监听器,用于在 Grasshopper 中响应 Excel 的变化。

  6. ClearSheet():清除工作表的内容和格式。

  7. WriteData():将列数据写入工作表(具体实现未显示)。

  8. GetRange():获取指定范围的单元格。

  9. GetUsedRange():获取工作表中已使用的单元格范围。

  10. AddPicture():在工作表中添加图片,包括删除同名图片和设置新图片属性。

这个类提供了一系列方法来操作 Excel 工作表,包括基本的工作表管理、数据写入、范围操作和图片插入等功能。通过这些方法,可以实现对 Excel 的程序化控制,为自动化处理 Excel 文档提供了强大的工具。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com