tsjlbobo 发表于 2018-3-13 14:42:30

关于spreadjs设定表单保护问题

不加载Excel时保护功能正常,一加载Excel保护功能就不行了,有兄弟帮忙看一下吗?谢谢!
<body>
    <div class="content-container">
      <div id="inner-content-container">
            <table id="formulaBar" style="width: 100%;">
                <tbody>
                  <tr>
                        <td style="vertical-align:top;">
                            <input type="text" id="positionbox" disabled="disabled" style="/*text-align: center;*/ padding: 5px; border-width: 0; background-color: rgb(235, 235, 228); height: 36px;">
                        </td>
                        <td style="width: 100%; border-left: 1px solid #ccc;">
                            <div id="formulabox" contenteditable="true" spellcheck="false" style="overflow: hidden; height: 36px; width: 100%; padding: 9px;"></div>
                            <div class="vertical-splitter ui-draggable" id="verticalSplitter"></div>
                        </td>
                  </tr>
                </tbody>
            </table>
            <div class="spread-container" id="controlPanel" style="height: 600px; bottom: 0;">
                <div id="ss" style="height: 100%; border: 1px solid #ddd;"></div>
            </div>
      </div>
    </div>

<div style="margin-bottom:100px;">
    <input type="button" value="导出excel" id="download" onclick="exportToExcel();">
    <input id="chkProtectSheet" type="checkbox" />
    <label for="chkProtectSheet">Protect Sheet</label>
    <input id="chkSelectUnlockedCells" type="checkbox" checked="checked" />
    <label for="chkSelectUnlockedCells">Select unlocked cells</label>
    <div class="option-row">
      <input id="chkAllowResizeRows" type="checkbox" />
      <label for="chkAllowResizeRows">Resize rows</label>
      <input id="chkAllowResizeColumns" type="checkbox" />
      <label for="chkAllowResizeColumns">Resize columns</label>
    </div>
    <div class="option-row">
      <input type="button" value="Set" id="setProtectionOptions" style="width:100px;" />
      <label style="width: 60%;">Select the Protection options and then click Set</label>
    </div>
   
</div>
</body>
$(document).ready(function() {
    var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {
      sheetCount: 1
    });
    initSpread(spread);
    TestSpread(spread);
});

function initSpread(spread) {
    fbx = new spreadNS.FormulaTextBox.FormulaTextBox(document.getElementById('formulabox'));
    fbx.workbook(spread);
   

    GC.Spread.Common.CultureManager.culture("zh-cn");
    var excelIo = new GC.Spread.Excel.IO();
    var excelFilePath = '/全自动变比测试仪测试版.xlsx';
    var xhr = new XMLHttpRequest();
    xhr.open('GET', excelFilePath, true);
    xhr.responseType = 'blob';
    xhr.onload = function (e) {

      if (this.status == 200) {
            var blob = this.response;

            // convert Excel to JSON

            excelIo.open(blob, function (json) {

                var workbookObj = json;

                spread.fromJSON(workbookObj);
                spread.suspendPaint();
                //spread.removeSheet(0);
                spread.setActiveSheetIndex(1);
                spread.resumePaint();
            }, function (e) {
                // process error
                alert(e.errorMessage);

            }, {});
      }

    };

    xhr.send();
}

function TestSpread(spread) {
    var sheet = spread.getActiveSheet();
    var option = {
      allowFilter: true,
      allowSort: false,
      allowResizeRows: true,
      allowResizeColumns: false,
      allowEditObjects: false
    };
    sheet.options.protectionOptions = option;
    sheet.options.isProtected = true;

    option = sheet.options.protectionOptions;
    $("#chkProtectSheet").prop("checked", sheet.options.isProtected);
    $("#chkSelectLockedCells").prop("checked", option.allowSelectLockedCells);
    $("#chkSelectUnlockedCells").prop("checked", option.allowSelectUnlockedCells);
    $("#chkAllowSort").prop("checked", option.allowSort);
    $("#chkAllowFilter").prop("checked", option.allowFilter);
    $("#chkAllowResizeRows").prop("checked", option.allowResizeRows);
    $("#chkAllowResizeColumns").prop("checked", option.allowResizeColumns);
    $("#chkAllowEditObjects").prop("checked", option.allowEditObjects);

    $("#chkProtectSheet").click(function() {
      var sheet = spread.getActiveSheet();
      var value = $(this).prop("checked");
      sheet.options.isProtected = value;
    });

    $("#setProtectionOptions").click(function() {
      var option = {
            allowSelectLockedCells: $("#chkSelectLockedCells").prop("checked"),
            allowSelectUnlockedCells: $("#chkSelectUnlockedCells").prop("checked"),
            allowSort: $("#chkAllowSort").prop("checked"),
            allowFilter: $("#chkAllowFilter").prop("checked"),
            allowResizeRows: $("#chkAllowResizeRows").prop("checked"),
            allowResizeColumns: $("#chkAllowResizeColumns").prop("checked"),
            allowEditObjects: $("#chkAllowEditObjects").prop("checked")
      };

      var sheet = spread.getActiveSheet();
      sheet.options.protectionOptions = option;
    });
}

tsjlbobo 发表于 2018-3-13 14:43:35

有人吗
页: [1]
查看完整版本: 关于spreadjs设定表单保护问题