HotXLS 文档

TXLSXCell / TXLSXCells 类

TXLSXWorksheet 上的单元格值访问 TXLSXCell 是单个单元格(值以及可选的公式和格式索引);TXLSXCells 是通过 Worksheet.Cells 获取的每个工作表集合。在 lxHandleX 中声明

TXLSXCell 声明

type
  TXLSXCell = class
    constructor Create(ARow, ACol: Integer; const AValue: Variant);
    destructor Destroy; override;
    procedure SetWorkbook(AWorkbook: TXLSXWorkbook);
    procedure SetArrayRoot(ARootRow, ARootCol: Integer);
    procedure SetArrayRange(ARootRow, ARootCol, ALastRow, ALastCol: Integer);
    property Workbook: TXLSXWorkbook;
    property ArrayRootRow: Integer;
    property ArrayRootCol: Integer;
    property ArrayLastRow: Integer;
    property ArrayLastCol: Integer;
    property Row: Integer;
    property Col: Integer;
    property Value: Variant;
    property FormatIndex: Integer;
    property FontIndex: Integer;
    property FillIndex: Integer;
    property BorderIndex: Integer;
    property NumberFormatIndex: Integer;
    property NumberFormat: WideString;
    property AlignmentIndex: Integer;
    property ProtectionIndex: Integer;
    property Formula: WideString;
    property RichText: TXLSXRichText;
    property Locked: Boolean;
    property FormulaHidden: Boolean;
    property FormattedText: WideString;
    property TaggedText: WideString;
  end;
      

TXLSXCell 成员

Destroy 释放实例状态并释放拥有的资源
SetWorkbook 写入所属的工作簿引用,以便数字格式查找等操作可以以 O(1) 时间重用共享工作簿池
SetArrayRoot / SetArrayRange 为数组公式溢出锚点设置 ArrayRoot* and ArrayLast* 标记,以便一个根单元格映射同一矩形中的所有依赖单元格
Workbook 对工作表单元格创建时设置的所属 TXLSXWorkbook 的反向引用
ArrayRootRow / ArrayRootCol / ArrayLastRow / ArrayLastCol 用于数组公式矩形保存/加载往返的只读 CSE 溢出元数据
Row 基于 1 的行索引
Col 基于 1 的列索引(1 = A,2 = B,...)
Value 作为 Variant 的单元格值。支持字符串、数字、布尔值和 TDateTime。未设置显式 FormatIndex 时,设置 TDateTime 会自动启用内置日期 cellXfXlsxXfIndexDate
FormatIndex xl/styles.xml cellXfs 中的索引。默认样式保留为 0。索引 1 保留用于内置日期格式(numFmtId 14m/d/yyyy)。设置时,在生成的单元格中,FormatIndex 优先于 FontIndex
FontIndex 基于 1 的 TXLSXWorkbook.Fonts 索引。保留为 0 以继承默认的 Calibri 11 字体
FillIndex 基于 1 的 TXLSXWorkbook.Fills 索引。参见 TXLSXFill
BorderIndex 基于 1 的 TXLSXWorkbook.Borders 索引。参见 TXLSXBorder
NumberFormatIndex 基于 1 的 TXLSXWorkbook.NumberFormats 索引。用于自定义格式代码,例如 '$#,##0.00''yyyy-mm-dd hh:mm:ss'
NumberFormat 用于自定义数字格式文本的便利属性。当 NumberFormatIndex 指向某个格式代码时,读取将从工作簿数字格式 pool 中返回该格式代码;分配字符串会查找或追加该格式并更新 NumberFormatIndex
AlignmentIndex 基于 1 的 TXLSXWorkbook.Alignments 索引。参见 TXLSXAlignment 以了解每个条目的水平 / 垂直 / 换行 / 缩进 / 旋转设置
RichText 可选的所属 TXLSXRichText 负载。设置时,单元格将作为多重运行的 <si> 条目通过共享字符串表,而不是作为纯字符串;分配 nil 会恢复为单元格的 Variant 值
Precedence 当在同一个单元格上设置了几个 *Index 属性时,SaveAs 侧按以下顺序选择匹配的 cellXf:FormatIndex > FontIndex > FillIndex > BorderIndex > NumberFormatIndex
Formula 可选的公式文本(没有前导 =)。设置时,SaveAs 会在单元格值旁生成一个 <f> 子元素,而 Open 会将其读回
ProtectionIndex 工作簿保护池中的索引。LockedFormulaHidden 便利属性会自动为常用操作维护此索引
Locked 如果为 True(每个新单元格的默认值),则在工作表受保护时保护单元格。设置为 False 允许在受保护的工作表中编辑特定的单元格。如果与默认值不同,则在单元格的 cellXf 内写入 <protection locked="0"/> 属性
FormulaHidden 如果为 True,则在工作表受保护时,公式栏不会显示单元格的公式。默认值为 False。在匹配 of cellXf 中生成 <protection hidden="1"/>
FormattedText 只读 WideString。根据单元格激活的自定义或内置数字格式代码,返回格式化为字符串的单元格值
TaggedText 只读 WideString。返回格式化的单元格字符串,在适用时包含用于富文本样式的类似 HTML/XML 的格式化标签

TXLSXCells 声明

type
  TXLSXCells = class
    constructor Create(AOwnerSheet: TXLSXWorksheet);
    destructor Destroy; override;
    procedure Clear;
    function HasCell(ARow, ACol: Integer): Boolean;
    function Remove(ARow, ACol: Integer): Boolean;
    property Item[ARow, ACol: Integer]: TXLSXCell; default;
    property Count: Integer;
    property CellByIndex[Index: Integer]: TXLSXCell;
  end;
      

TXLSXCells 成员

Create 构造与一个所属工作表绑定的单元格集合
Destroy 释放集合所拥有的所有单元格
Item[Row, Col] 返回给定基于 1 的坐标处的单元格,在首次访问时创建空 TXLSXCell。声明为默认属性,因此 Cells[Row, Col] 可以作为简写使用
Count 当前存储的单元格数量
CellByIndex[i] 给定基于 0 的插入索引处的单元格。在不知道已填充行和列的情况下,对顺序枚举非常有用
Remove 删除坐标处的单个现有单元格,并返回是否确实发生了删除
HasCell(Row, Col) 如果在给定坐标处已存在单元格,则返回 True。使用此方法可以避免因 Item[Row, Col] 的副作用而创建空单元格
Clear 删除并释放集合中的每个单元格

Example

var
  ws: TXLSXWorksheet;
  i: Integer;
begin
  ws := Workbook.Sheets.Add('Demo');

  ws.Cells.Item[1, 1].Value := 'Hello';
  ws.Cells.Item[1, 2].Value := 123.45;
  ws.Cells.Item[2, 1].Value := Now;             // 呈现为日期
  ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';

  for i := 0 to ws.Cells.Count - 1 do
    WriteLn(ws.Cells.CellByIndex[i].Row, ',',
            ws.Cells.CellByIndex[i].Col);
end;
    

See also