去掉空白区域,是想呈现当前单元格铺满可视窗口呢还是让空白区域中也绘制出来单元格?
对于前者,先取消水平和垂直滚动条(因为要铺满的话,所有数据都在可视窗口内了,不需要再滚动了),然后对每行设置动态行高、对每列设置动态列宽,如下动图所示:
可以参考如下代码:
- // 隐藏垂直滚动条
- spread.options.showVerticalScrollbar = false;
- // 隐藏水平滚动条
- spread.options.showHorizontalScrollbar = false;
- // 或在显示滚动条的情况下使用这行代码,以基于sheet内全部行高列宽总数显示滚动条
- spread.options.scrollbarMaxAlign = true;
- // 动态行高
- for (var i = 0; i < sheet.getRowCount(); i++) {
- sheet.setRowHeight(i, '*');
- }
- // 动态列宽
- for (var j = 0; j < sheet.getColumnCount(); j++) {
- sheet.setColumnWidth(j, '*');
- }
复制代码
对于后者,先计算当前sheet中总行高和总列宽,再获取viewport高度和列宽,以首行首列的行高和列宽分别为依据计算需要填满viewport区域所需的新增行数和列数,然后扩展行数和列数即可,如下动图所示:
参考如下代码:
- // 获取viewport行高
- var viewportHeight = sheet.getViewportHeight(1);
- // 获取viewport列宽
- var viewportWidth = sheet.getViewportWidth(1);
- // 获取当前sheet总行高
- var heightSum = 0;
- for (var i = 0; i < sheet.getRowCount(); i++) {
- heightSum += sheet.getRowHeight(i);
- }
- // 获取当前sheet总列宽
- var widthSum = 0;
- for (var j = 0; j < sheet.getColumnCount(); j++) {
- widthSum += sheet.getColumnWidth(j);
- }
- // 计算填满空白区域所需新增行数
- var addedRowCount = Math.floor((viewportHeight - heightSum) / sheet.getRowHeight(0));
- // 计算填满空白区域所需新增列数
- var addedColCount = Math.floor((viewportWidth - widthSum) / sheet.getColumnWidth(0));
- // 扩展行数
- sheet.setRowCount(sheet.getRowCount() + addedRowCount);
- // 扩展列数
- sheet.setColumnCount(sheet.getColumnCount() + addedColCount);
复制代码
|