Bumblebee/Classes/ExCell.cs
Flow diagram
这个流程图展示了ExCell类的主要结构:
- 类的主要组成部分:成员变量、构造函数、属性和方法。
- 成员变量:column, row, isColumnAbsolute, isRowAbsolute。
- 不同的构造函数。
- 属性:Column, Row, Address, IsColumnAbsolute, IsRowAbsolute。
- ToString方法。
- Address属性的特殊处理,包括使用Helper类的方法进行地址转换。
Description
-
开始 / Start
这是流程的起点,代表我们开始使用 ExCell 类。 -
创建 ExCell 实例 / Create ExCell Instance
这对应于代码中的构造函数部分。public class ExCell { // 构造函数 / Constructors public ExCell() { } public ExCell(ExCell cell) { ... } public ExCell(string address) { ... } public ExCell(int column, int row) { ... } public ExCell(int column, int row, bool absColumn, bool absRow) { ... } }
-
选择构造方法 / Choose Constructor
根据需求选择不同的构造函数来创建 ExCell 实例。 -
属性操作 / Property Operations
这对应于代码中的属性部分。public virtual int Column { get; set; } public virtual int Row { get; set; } public virtual string Address { get; set; } public virtual bool IsColumnAbsolute { get; } public virtual bool IsRowAbsolute { get; }
-
地址转换操作 / Address Conversion Operations
这主要对应于 Address 属性的 get 和 set 方法。public virtual string Address { get { return Helper.GetCellAddress(column,row,IsColumnAbsolute,isRowAbsolute); } set { Tuple<int, int> loc = Helper.GetCellLocation(value); Tuple<bool, bool> abs = Helper.GetCellAbsolute(value); // ... set values ... } }
-
其他操作 / Other Operations
这包括 ToString 方法。public override string ToString() { return this.Address; }
-
成员变量 / Member Variables
虽然流程图中没有直接显示,但这些是类的基础。protected int column = 1; protected int row = 1; protected bool isColumnAbsolute = false; protected bool isRowAbsolute = false;
流程图展示了使用 ExCell 类的典型过程:
- 创建实例
- 对实例进行各种操作(如获取/设置属性,进行地址转换)
- 完成操作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bumblebee
{
/// <summary>
/// ExCell类代表Excel中的一个单元格
/// 它包含单元格的列、行信息,以及是否为绝对引用
/// </summary>
public class ExCell
{
#region 成员变量
// 单元格的列号,默认为1
protected int column = 1;
// 单元格的行号,默认为1
protected int row = 1;
// 列引用是否为绝对引用,默认为false
protected bool isColumnAbsolute = false;
// 行引用是否为绝对引用,默认为false
protected bool isRowAbsolute = false;
#endregion
#region 构造函数
/// <summary>
/// 默认构造函数,创建一个位于A1的单元格
/// </summary>
public ExCell()
{
}
/// <summary>
/// 复制构造函数,创建一个与给定单元格相同的新单元格
/// </summary>
/// <param name="cell">要复制的单元格</param>
public ExCell(ExCell cell)
{
this.column = cell.column;
this.row = cell.row;
this.isColumnAbsolute = cell.isColumnAbsolute;
this.isRowAbsolute = cell.isRowAbsolute;
}
/// <summary>
/// 通过地址字符串创建单元格
/// </summary>
/// <param name="address">单元格地址,如"A1"或"$B$2"</param>
public ExCell(string address)
{
this.Address = address;
}
/// <summary>
/// 通过列号和行号创建单元格
/// </summary>
/// <param name="column">列号</param>
/// <param name="row">行号</param>
public ExCell(int column, int row)
{
this.column = column;
this.row = row;
}
/// <summary>
/// 创建可能包含绝对引用的单元格
/// </summary>
/// <param name="column">列号</param>
/// <param name="row">行号</param>
/// <param name="absColumn">列是否为绝对引用</param>
/// <param name="absRow">行是否为绝对引用</param>
public ExCell(int column, int row, bool absColumn, bool absRow)
{
this.column = column;
this.row = row;
this.isColumnAbsolute = absColumn;
this.isRowAbsolute = absRow;
}
#endregion
#region 属性
/// <summary>
/// 获取或设置单元格的列号
/// </summary>
public virtual int Column
{
get { return column; }
set {
this.column = value;
}
}
/// <summary>
/// 获取或设置单元格的行号
/// </summary>
public virtual int Row
{
get { return row; }
set
{
this.row = value;
}
}
/// <summary>
/// 获取或设置单元格的地址
/// 当获取时,会根据当前的列、行和绝对引用信息生成地址字符串
/// 当设置时,会解析地址字符串,更新列、行和绝对引用信息
/// </summary>
public virtual string Address
{
get { return Helper.GetCellAddress(column, row, IsColumnAbsolute, isRowAbsolute); }
set
{
// 解析地址字符串,获取列和行的信息
Tuple<int, int> loc = Helper.GetCellLocation(value);
// 解析地址字符串,获取绝对引用的信息
Tuple<bool, bool> abs = Helper.GetCellAbsolute(value);
this.column = loc.Item1;
this.row = loc.Item2;
this.isColumnAbsolute = abs.Item1;
this.isRowAbsolute = abs.Item2;
}
}
/// <summary>
/// 获取列引用是否为绝对引用
/// </summary>
public virtual bool IsColumnAbsolute
{
get { return isColumnAbsolute; }
}
/// <summary>
/// 获取行引用是否为绝对引用
/// </summary>
public virtual bool IsRowAbsolute
{
get { return isRowAbsolute; }
}
#endregion
#region 方法
// 此区域为空,可以在此添加自定义方法
#endregion
#region 重写
/// <summary>
/// 重写ToString方法,返回单元格的地址
/// </summary>
/// <returns>单元格的地址字符串</returns>
public override string ToString()
{
return this.Address;
}
#endregion
}
}