冻结
冻结以当前选区的左上角单元格的左上角作为冻结点。所以如果当前选区是 A1 单元格,则使用取消冻结。
IWorksheetData.freeze
可以配置工作表的冻结状态。它的接口定义如下:
interface IFreeze {
/**
* 冻结列的数量
*/
xSplit: number
/**
* 冻结行的数量
*/
ySplit: number
/**
* 可滚动的起始行(视图主区域的起始行)
*/
startRow: number
/**
* 可滚动的起始列(视图主区域的起始列)
*/
startColumn: number
}
例如,我想冻结 B 列和第 2 行,可以这样配置:
{
"xSplit": 1, // 冻结 1 列,即 B 列
"ySplit": 1, // 冻结 1 行,即第 2 行
"startRow": 2, // 可滚动的起始行是第 3 行
"startColumn": 2 // 可滚动的起始列是第 C 列
}
如果想实现自定义冻结功能,例如:冻结首行和首列,可以参考:
Facade API
FWorksheet
类提供了几种方法来管理工作表中行和列的冻结状态。这些方法允许您设置、获取和取消冻结窗格。
设置冻结
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
worksheet.setFreeze({
xSplit: 1, // 冻结 1 列,即 B 列
ySplit: 1, // 冻结 1 行,即第 2 行
startRow: 2, // 可滚动的起始行是第 3 行
startColumn: 2, // 可滚动的起始列是第 C 列
})
console.log('当前冻结状态:', worksheet.getFreeze())
设置冻结列的数量
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
// 设置 A-B 列冻结
worksheet.setFrozenColumns(2)
设置冻结行的数量
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
// 设置前 3 行冻结
worksheet.setFrozenRows(3)
获取冻结状态
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
const freezeState = worksheet.getFreeze()
获取冻结列的数量
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
const frozenColumns = worksheet.getFrozenColumns()
获取冻结行的数量
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
const frozenRows = worksheet.getFrozenRows()
取消冻结
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
// 取消所有冻结
worksheet.cancelFreeze()