Block是指在一个sheet中一块连续的由单元格组成的区域。 该区域可以随时调整大小,但不受插入行列等全局操作影响。Block中的单元格可以引用任何单元格,也可被任何单元格引用。Block是LogiSheets实现结构化数据的基础。
在创建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单元格不能同时被一个Range引用.若一个公式包含一个Range引用A1:C5,那么A1:C5这个范围内要么全是一般单元格,要么全是Block单元格.