Block

Block是指在一个sheet中一块连续的由单元格组成的区域。 该区域可以随时调整大小,但不受插入行列等全局操作影响。Block中的单元格可以引用任何单元格,也可被任何单元格引用。Block是LogiSheets实现结构化数据的基础

Block的创建、扩大、移动

在创建Block时,需要先指定Block的大小。那么原本在这片区域的“一般单元格”都会被删除(若有公式引用,则引用处变为#REF!)。 Block扩建与移动同理,将会被Block占用的“一般单元格”会被删除。

用一种形象的方式去描述:Block的创建、扩大和移动都是去“占领”一般单元格的地盘的。 也就是说,Block的创建、扩大、和移动,除了涉及被占据的一般单元格外,其他的一般单元格是没有影响的。 这与插入或行列块是有明显区别的。 这样的设计的好处显而易见:在一个具体的位置当中,如A5,D9,这个单元格要么是一般单元格、要么是Block单元格。 这样在公式中引用该单元格时就可以转换成单元格ID。

单元格

组成Block的单元格不妨称为Block单元格。

用户在某个单元格键入公式,其中包含了对单元格C5的引用。

其与一般单元格唯一的不同在于两者单元格Id组织方式存在差别。

rs pub enum CellId { NormalCell(NormalCellId), BlockCell(BlockCellId), }

操作

全局插入行或列

全局删除行或列

Block插入行或列

Block删除行或列

删除Block单元格

Block的单元格删除只能通过删除Block的整行或整列来达到.不能删除个别的单元格. 当用户选定部分Block单元格进行删除时,实际上是将该数据清空.

单元格引用

一般单元格及Block单元格不能同时被一个Range引用.若一个公式包含一个Range引用A1:C5,那么A1:C5这个范围内要么全是一般单元格,要么全是Block单元格.