整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          報表界面開發(fā):如何設計對表格工作簿的權限控制

          preadJS ,作為一款基于 HTML5 的純前端電子表格控件,兼容 450 種以上的 Excel 公式,可為用戶帶來親切的 Excel 使用體驗,并可滿足企業(yè)IT部門 Web Excel 組件開發(fā)、數(shù)據(jù)填報、Excel 類報表設計、表格文檔協(xié)同編輯等業(yè)務場景。

          離線填報,作為數(shù)據(jù)填報的典型應用場景之一,可以讓業(yè)務人員在生產(chǎn)環(huán)境中,隨時隨地隨心的完成填報工作,而不受限于網(wǎng)絡。

          離線填報的一般實現(xiàn)流程是:

          1. 輸出HTML 離線報表
          2. 非網(wǎng)絡環(huán)境下進行數(shù)據(jù)填報
          3. 聯(lián)網(wǎng)后,再進行數(shù)據(jù)提交

          因為涉及到異步操作的過程,需要對離線填報人員做出權限控制,這個時候密碼保護就顯得尤為重要了。

          SpreadJS作為一款在線Excel編輯控件,目前僅支持工作簿密碼保護,暫不支持工作表密碼保護功能。不過SpreadJS在設計之初,為了保持對Excel最大的兼容度,在將Excel的工作表導入時,密碼相關部分也會保存進SpreadJS的ssjson中,通過spread.toJSON() 的序列化之后,我們也可以正常使用密碼保護功能,序列化的Json文件如下圖所示:

          上圖中紅框所示部分就是工作表的密碼保護以及設置的密碼字符串。

          我們只要將這一部分保留,就可以在我們設計的Excel模板上添加對應的工作表保護。

          請注意,由于Excel本身會將密碼進行一次加密,所以我們無法直接修改json中的對應的鍵值來更改成我們想要的明文密碼,所以我們需要預先導入一次我們設置好對應密碼的Excel,用來提取密碼的相關信息。

          可以按照下面的演示進行操作:

          1. 首先導入一個空Excel,給對應的工作表設置對應的密碼保護

          2. 將該Excel導入到SpreadJS中,然后通過spread.toJSON()來獲取整個json,通過代碼找到對應的密碼保護相關設置:

          var json = spread.toJSON()
          var protectOptions = json.sheets.Sheet1.protectionOptions

          這里由于Excel中默認是在Sheet1這個工作簿上設置的密碼保護,所以需要用json.sheets.Sheet1.protectionOptions來獲取對應的protectOptions設置,并將其暫時存儲在變量中以備后用。

          3. 接下來我們正常設計填報模板。

          填報模板的設計原理是相同的,但設計方法不同,尤其體現(xiàn)在桌面設計器和在線表格編輯器中,這一點需要注意。

          填報模板的設計原理:將臨時保存的protectOptions merge到最終生成的ssjson中。(SpreadJS的ExcelIO導出Excel時需要使用spread序列化toJSON生成的ssjson,因此通過js操作,我們就可以將之前臨時保存的protectOptions merge進去。)

          由于在設計表單保護時勾選的操作也會更改protectionOptions,如果單純替換就會導致設計模板時候設置的表單保護選項丟失,例如:我們在設計模板的時候勾選了調(diào)整行列大小,如下所示:

          此時,protectOptions中會記錄

          如果我們將之前臨時保存的protectOptions直接替換,那么上述設置就會丟失。

          所以這里需要如下操作:

          首先,將目前的protectOptions臨時保存:


          var tempProtectOptions = json.sheets.Sheet1.protectionOptions


          然后,替換為之前帶有密碼的protectOptions:


          json.sheets.Sheet1.protectionOptions = protectOptions


          之后,將tempProtectOptions里面的內(nèi)容merge進去:


          <div>json.sheets.Sheet1.protectionOptions.allowResizeRows = true;</div>
          <div>json.sheets.Sheet1.protectionOptions.allowResizeColumns = true;</div>


          最后,將調(diào)整之后的ssjson交給ExcelIO進行導出:


          <div>
          <span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);"> excelio.save(json, </span><span class="hljs-function" style="box-sizing: inherit; color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre;"><span class="hljs-keyword" style="box-sizing: inherit; font-weight: 700;">function</span> (<span class="hljs-params" style="box-sizing: inherit;">blob</span>) </span><span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);">{
          </span><span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);">
          }, 
          </span><span class="hljs-function" style="box-sizing: inherit; color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre;"><span class="hljs-keyword" style="box-sizing: inherit; font-weight: 700;">function</span> (<span class="hljs-params" style="box-sizing: inherit;">e</span>) </span><span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);">{</span><span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);">
          </span><span class="hljs-built_in" style="box-sizing: inherit; color: rgb(0, 134, 179); font-family: monospace, monospace; font-size: 16px; white-space: pre;">console</span><span style="color: rgb(51, 51, 51); font-family: monospace, monospace; font-size: 16px; white-space: pre; background-color: rgb(248, 248, 248);">.log(e);
          });
          </span>
          </div>


          此時,導出的Excel中就會帶有密碼了,密碼就是之前導入Excel中設置的密碼,這樣在離線填報時候就可以控制填報人員的操作權限了,填報人員也無法對有密碼保護的文件進行修改。

          以上,就是SpreadJS在離線填報的場景下,實現(xiàn)密碼權限控制的方法,您可以在 SpreadJS 的在線表格編輯器 完成密碼設置,并導入Excel中查看效果。

          SpreadJS v13.2

          SpreadJS 是一款基于 HTML5 的純前端電子表格控件,兼容 450 種以上的 Excel 公式,憑借其 “高性能、跨平臺、與 Excel 高度兼容”的產(chǎn)品特性,備受以華為、蘇寧易購、天弘基金等為代表的企業(yè)用戶青睞。SpreadJS 為用戶帶來親切的 Excel 使用體驗的同時,滿足 Web Excel 組件開發(fā)、表格文檔協(xié)同編輯、數(shù)據(jù)填報、Excel 類報表設計等業(yè)務場景,極大降低了企業(yè)研發(fā)成本和項目交付風險。

          本文轉載自葡萄城

          點擊下方“了解更多”獲取更多界面開發(fā)教程!


          <style>

          .textVertical{

          padding:5px 20px;

          width:24px;

          line-height:24px;

          }

          .backgroundImg{

          background-image:url(bg.jpg);

          background-repeat:no-repeat;

          background-size:100% 100%;

          }

          .trBackground{

          background-image:url(bg.jpg);

          background-repeat:no-repeat;

          background-size:100% 60px;

          }

          </style>

          <table border="1" width="600" cellspacing="10" cellpadding="10" bgcolor="#ffe4c4" align="center">

          <caption>學籍表</caption>

          <thead bgcolor="#f004c4">

          <tr>

          <th>姓名</th>

          <th>性別</th>

          <th>專業(yè)</th>

          <th>輔導員</th>

          </tr>

          </thead>

          <tr>

          <td>吳杰</td>

          <td>女</td>

          <td>計算機網(wǎng)絡技術</td>

          <td rowspan="2">劉凱</td>

          </tr>

          <tr>

          <td>張力</td>

          <td>男</td>

          <td>計算機應用</td>

          </tr>

          </table>

          ijmo是一款使用TypeScript編寫的新一代JavaScript/HTML5控件集。它秉承觸控優(yōu)先的設計理念,在全球率先支持AngularJS,并提供性能卓越、零依賴的FlexGrid 和圖表等多個控件。

          FlexSheet是一個快速輕量的控件,可以輕松導入電子表格、應用公式、格式化和凍結表格、格式化凍結的單元格、撤銷/重做以及導出數(shù)據(jù)到Excel。在web應用中使用FlexSheet能擁有與使用Excel相似的體驗。

          下面來介紹FlexSheet的基本功能。

          快速靈活的表單控件

          FlexSheet集中了Excel的主要特性:小型,快速和能擴展。這個理念促使我們在保證為您提供無限擴展可能的同時始終保持以HTML5和javascript為核心。

          囊括常用公式

          FlexSheet包含了內(nèi)置公式的計算引擎,覆蓋了近100個公式,還能自動化完成。我們的公式結合了Microsoft Excel的操作,包括聚合操作、數(shù)學運算、邏輯和文本。

          導入和導出到Excel

          FlexSheet能夠導入已有的Excel電子表格,修改表格,和重新導出到Excel文件,它為用戶提供了一個靈活的跨應用的HTML5電子表格體驗。

          熟悉的體驗

          從鍵盤導航到數(shù)據(jù)實體,F(xiàn)lexSheet 功能的設計就是為了讓用戶有熟悉的體驗。FlexSheet 的功能與Excel相似,這樣您就能跳過入門學習,從而提高生產(chǎn)效率,還能讓用戶有像回家的熟悉感覺。

          靈活的數(shù)據(jù)綁定

          FlexSheet不僅支持非綁定的數(shù)據(jù),還支持數(shù)據(jù)綁定表格。在綁定模式下,列可以被定義和綁定數(shù)據(jù),就像FlexGrid一樣。實際上,F(xiàn)lexSheet擴展了FlexGrid。在非綁定模式下,您可以通過編程在空表格里設置表格值。

          構建一個AngularJS電子表格

          AngularJS是現(xiàn)今最流行最強大的JavaScript應用框架。我們?yōu)槲覀兊乃锌丶\送和維護AngularJS指令,包括大多數(shù)示例中都會用到的FlexSheet。

          AngularJS FlexSheet指令讓您聲明創(chuàng)建與Excel類似的Angular電子表格, 所有的指令都是以標記的形式。當然,您也可以在其他框架中使用FlexSheet。

          在應用程序中FlexSheet,能夠給用戶提供一個熟悉的強大的工具分析數(shù)據(jù)。

          快人一步,免費試用

          試用Wijmo,或了解金雞獻瑞ComponentOne全線產(chǎn)品7折迎春活動,請通過以下方式聯(lián)系我們:

          微信:GrapeCityDT

          郵件:marketing.xa@grapecity.com

          官網(wǎng):www.gcpowertools.com.cn

          關于葡萄城

          葡萄城是全球最大的控件提供商,世界領先的企業(yè)應用定制工具、企業(yè)報表和商業(yè)智能解決方案提供商,為超過75%的全球財富500強企業(yè)提供服務。


          主站蜘蛛池模板: 视频在线观看一区二区| 午夜天堂一区人妻| 色视频综合无码一区二区三区| 国产成人AV一区二区三区无码| 亚洲电影一区二区| 亚洲一区二区观看播放| 日韩精品无码一区二区三区四区| 无码人妻视频一区二区三区| 中文字幕AV一区二区三区人妻少妇| 国产福利在线观看一区二区| 亚洲av综合av一区| 中日韩一区二区三区| 风间由美性色一区二区三区| 日韩精品一区二区午夜成人版| 亚洲一区二区三区AV无码| 国产午夜精品一区理论片飘花| 国产91精品一区二区麻豆亚洲 | 亚洲一区二区三区免费在线观看| 亚洲国产一区二区三区| 精品国产一区二区三区久久影院| 国偷自产av一区二区三区| 亚洲丰满熟女一区二区哦| 国产福利91精品一区二区三区| 2021国产精品一区二区在线| 亚洲午夜福利AV一区二区无码| 三上悠亚亚洲一区高清| 国产一区二区三区国产精品| 亚洲欧洲精品一区二区三区| 久久精品一区二区国产| 国产综合精品一区二区三区| 杨幂AV污网站在线一区二区| 国产精品福利一区| 国产一区内射最近更新| 精品国产一区二区麻豆| 成人免费视频一区二区三区 | 国产精品乱码一区二区三| 中文字幕一区二区日产乱码| 精品国产日韩亚洲一区91| 久久99精品一区二区三区| 国产女人乱人伦精品一区二区| 国产精品视频免费一区二区三区|