单元格编辑1

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="utf-8" />

    <!-- disable IE compatible view -->

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="spreadjs culture" content="zh-cn" />

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" , user-scalable=no" />

    <title>SpreadJS Demo : 单元格编辑</title>

    <!-- CDN Reference    -->

    <link rel="icon" type="image/png" href="https://demo.grapecity.com.cn/SpreadJS/TutorialSample/icon.ico" />

    <link rel=" stylesheet" type="text/css" href="https://cdn.grapecity.com.cn/spreadjs/css/basscss.min.css" />

    <link rel="stylesheet" type="text/css" href="https://cdn.grapecity.com.cn/spreadjs/css/gc.spread.sheets.excel2013white.12.0.6.css" />

    <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/gc.spread.sheets.all.12.0.6.min.js"></script>

    <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/resources/zh/gc.spread.sheets.resources.zh.12.0.6.min.js"></script>

    <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/jquery-1.11.1.min.js"></script>

    <script type="text/javascript" src="https://demo.grapecity.com.cn/SpreadJS/TutorialSample/js/spread/license.js"></script>

    <!-- 页面内自定义 CSS-->

    <style>

        body {

        background: rgb(250, 250, 250);

        color: #333;

      }

      #ss {

          border: 1px #ccc solid;

      }

      .container {

        width: 80%;

        background: rgb(250, 250, 250);

        margin: 0 auto;

        height: 600px;

      }

      .full-height {

        height: 100%;

      }

        .left{

            height: 100%;

            overflow: auto;

        }

    </style>

</head>

<body>

    <div class="container">

        <div class="clearfix border-bottom">

            <div class="col col-8">

                <h3>SpreadJS Demo : 单元格编辑</h3>

            </div>

            <div class="col col-4 right-align align-middle">

                <h5>

                    <ul class="list-reset">

                        <li class="inline-block mr1"><a class="btn" href="https://www.grapecity.com.cn/developer/spreadjs "

                                target="_blank ">产品官网</a></li>

                        <li class="inline-block mr1"><a class="" href="https://gcdn.grapecity.com.cn/showforum-185-1.html "

                                target="_blank ">论坛求助</a></li>

                        <li class="inline-block mr1"><a class="" href="https://demo.grapecity.com.cn/SpreadJS/TutorialSample/#/samples "

                                target="_blank ">更多示例</a></li>

                    </ul>

                </h5>

            </div>

        </div>

        <div class="full-height clearfix mt2">

            <div class="col col-4 left">

                <h4 class="mb0">单元格导航行为</h4>

                <p  style="width: 90%"class="m0 ">说明:按Tab和Shift+Tab,

                </p>

                <div class="option-row" style="margin-bottom: 10px;">

                    <input type="text" id="preEdit" placeholder="编辑框1"  />

                    <input type="button" id="preButton" value="按钮1" />

                </div>


                <div class="option-row">

                    <input type="text" id="nextEdit" placeholder="编辑框2"  />

                    <input type="button" id="nextButton"  value="按钮2" />

                </div>

                <div >

                    <label>按下Tab用于:</label><br/>

                    <select id="tabAction">

                        <option value="0" selected="selected">下一个单元格</option>

                        <option value="1">下一个控件 </option>

                        <option value="2">先单元格再控件</option>

                    </select>

                </div>

                <div >

                    <label>按下Shift + Tab 用于:</label><br/>

                    <select id="shiftTabAction">

                        <option value="0" selected="selected">前一个单元格</option>

                        <option value="1">前一个控件</option>

                        <option value="2">前一个单元格然后控件</option>

                    </select>

                </div>

                <h4 class="mb0">脏数据</h4>

                <p  style="width: 90%"class="m0 ">说明:获得变更的数据。

                    </p>

                    <input type="button" id="btnInsertRow"  value="插入行" />

                    <input type="button" id="btnDeleteRow"  value="删除行" />

                    <input type="button" id="btnClearPendingChanges"  value="清除改变状态" />

                    <input type="button" id="btnGetDirtyRows"  value="获取行脏数据" />

                    <input type="button" id="btnGetDirtyCells"  value="获取单元格脏数据" />

                    <input type="button" id="btnGetSelectionDirtyCells"  value="获取选中的单元格脏数据" />

                    <input type="button" id="btnGetInsertRows"  value="获取插入的行" />

                    <input type="button" id="btnGetDeleteRows"  value="获取删除的行" />

                    <div class="option-row" style="width:100%;height:150px;">

                            <textarea id="taResult" style="width:90%;padding:0;height:150px;background:none"></textarea>

                        </div>

                        <h4 class="mb0">单引号前缀</h4>

                        <p  style="width: 90%"class="m0 ">说明: 当你输入的值带有单引号前缀',输入的值会被转换并存储为字符串。

                            </p>

                </div>

            <div class="col col-8 full-height ">

                <div id="ss" style="height:480px"></div>

            </div>

        </div>

    </div>

</body>

<script type="text/javascript ">

    var spreadNS = GC.Spread.Sheets;

    $(document).ready(function () {

        var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));

        var sheet = spread.getActiveSheet();

  /*-------------------导航行为-----------------*/

        sheet.setRowCount(10);

        sheet.setColumnCount(5);

        document.getElementById('tabAction').addEventListener('click',moveHandle);

        document.getElementById('shiftTabAction').addEventListener('click',moveHandle);

        function moveHandle(){

            var id = this.id, isShift = id.indexOf("shift") === 0,

                    value = parseInt(this.value, 10),

                    actions = GC.Spread.Sheets.Commands,

                    action;

                switch (value) {

                    case 0:

                        action = isShift ? actions.moveToPreviousCell : actions.moveToNextCell;

                        break;

                    case 1:

                        action = isShift ? actions.selectPreviousControl : actions.selectNextControl;

                        break;

                    case 2:

                        action = isShift ? actions.moveToPreviousCellThenControl : actions.moveToNextCellThenControl;

                        break;

                }

                if (action) {

                    // name: 操作的名称。

                    // execute: 操作的执行命令。

                    // key: 按键的 Unicode 编码。

                    // ctrl: 按下 Ctrl 键时为 true,否则为 false。

                    // shift: 按下 Shift 键时为 true,否则为 false。

                    // alt: 按下 Alt 键时为 true,否则为 false。

                    // meta: 按下 Macintosh 设备上的 Command 键或者 Windows 设备上的 Windows 键时为 true,否则为false。

                    spread.commandManager().register("customCommand"+ new Date().valueOf(), action, GC.Spread.Commands.Key.tab, false, isShift, false, false);

                }

        }

        /*---------------------脏数据----------------------*/

  function getDirtyCellData(dirtyItem){

      return ["Cell (", dirtyItem.row, ",", dirtyItem.col, ") 旧值: ", dirtyItem.oldValue, " 新值: ", dirtyItem.newValue].join("");

  }

  function appendResult(txt) {

        document.getElementById('taResult').value=document.getElementById('taResult').value + txt + "\n";

    }

  // 删除行

  document.getElementById("btnDeleteRow").addEventListener('click',function(){

      var sels = sheet.getSelections();

      var len = sels.length;

      if(len >0){

          var s = sels[0];

          sheet.deleteRows(s.row, s.rowCount);

      }

  });

    // 增加行

    document.getElementById("btnInsertRow").addEventListener('click',function(){

      var sels = sheet.getSelections();

      var len = sels.length;

      if(len >0){

          var s = sels[0];

          sheet.addRows(s.row, 1);

      }

  });

  // 获取选中区域中的单元格脏数据

  document.getElementById("btnGetSelectionDirtyCells").addEventListener('click',function(){

    var sels = sheet.getSelections();

        var len = sels.length;

        if (len > 0) {

            var s = sels[0];

            var row = s.row, col = s.col;

            if (row < 0) {

                row = 0;

            }

            if (col < 0) {

                col = 0;

            }

            var cells = sheet.getDirtyCells(row, col, s.rowCount, s.colCount);

            if (cells.length > 0) {

                appendResult("单元格脏数据:\n" + cells.map(function (item) { return getDirtyCellData(item); }).join("\n"));

            }

        }

  });

// 获取单元格脏数据

document.getElementById("btnGetDirtyCells").addEventListener('click',function(){

    var cells = sheet.getDirtyCells();

        if (cells.length > 0) {

            appendResult("单元格脏数据:\n" + cells.map(function (item) { return getDirtyCellData(item); }).join("\n"));

        }

  });

// 获取整行脏数据

document.getElementById("btnGetDirtyRows").addEventListener('click',function(){

    var rows = sheet.getDirtyRows();

    if (rows.length > 0) {

    appendResult("脏数据行:\n" + rows.map(function (item) { return item.row; }).join(", "));

    }

  });

// 清除改变

document.getElementById("btnClearPendingChanges").addEventListener('click',function(){

  sheet.clearPendingChanges();

  });

  // 获取插入的行

  document.getElementById("btnGetInsertRows").addEventListener('click',function(){

    var rows = sheet.getInsertRows();

        if (rows.length > 0) {

            appendResult("插入的行 @ " + rows.map(function (item) { return item.row; }).join(", "));

        }

  });

  // 获取删除的行

  document.getElementById("btnGetDeleteRows").addEventListener('click',function(){

    var rows = sheet.getDeletedRows();

        if (rows.length > 0) {

            appendResult("删除的行 @ " + rows.map(function (item) { return item.row; }).join(", "));

        }

  });

/*-------------------------------单引号前缀---------------------*/

sheet.setValue(0,0,"往单元格里输入:0123 识别为数字");

sheet.setValue(1,0,"往单元格里输入:'0123 识别为字符串");

});

</script>

</html>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容