找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-3-3 14:07  /   查看:2641  /  回复:0
背景:客户希望在表单中空单元格上显示"-",以表示该单元格无值且不能修改。原理:自定义单元格的paint方法中判断是否为空,如为空则渲染为"-",这样不会更改单元格的真实值。

核心代码(完整示例参考附件):
  1. var spreadNS = GC.Spread.Sheets;
  2.     window.onload = function () {
  3.         var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  4.         initSpread(spread);
  5.     };

  6.     function ShowValueCellType() {
  7.     }
  8.     ShowValueCellType.prototype = new spreadNS.CellTypes.Text();
  9.     ShowValueCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
  10.         if (value === null || value === undefined) {
  11.             value = "-";
  12.         }
  13.                 spreadNS.CellTypes.Base.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, options]);
  14.     };
  15.    
  16.     function initSpread(spread) {
  17.         var sheet = spread.getSheet(0);
  18.         sheet.suspendPaint();

  19.         sheet.setRowCount(8);
  20.         sheet.setColumnCount(10);

  21.         sheet.setValue(0,0, "值1", GC.Spread.Sheets.SheetArea.colHeader);
  22.         sheet.setValue(0,1, "值2", GC.Spread.Sheets.SheetArea.colHeader);
  23.         sheet.setValue(0,2, "值1+值2", GC.Spread.Sheets.SheetArea.colHeader);

  24.         for(var i=0; i<sheet.getRowCount()-1; i++){
  25.             sheet.setValue(i, 0, i);
  26.             sheet.setValue(i, 1, sheet.getRowCount() - i);
  27.             var j = i+1;
  28.             sheet.setFormula(i, 2, "=A"+j+"+B"+j);
  29.             sheet.setValue(i, 2, i+1);
  30.         }
  31.         sheet.getRange(0,0,sheet.getRowCount(),sheet.getColumnCount()).cellType(new ShowValueCellType());
  32.         sheet.setFormula(7, 2, "=A8+B8");

  33.         sheet.resumePaint();

  34.     };
复制代码


自定义单元格_空值显示为-.html

2.39 KB, 下载次数: 24

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部