轉(zhuǎn)帖|使用教程|編輯:龔雪|2020-09-23 10:29:49.197|閱讀 258 次
概述:離線填報是數(shù)據(jù)填報的典型應用場景之一,如何在離線填報時完成權(quán)限控制呢?在數(shù)據(jù)填報時常常有這樣的煩惱,使用前端電子表格控件SpreadJS能輕松幫你搞定,快來下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
SpreadJS ,作為一款基于 HTML5 的純前端電子表格控件,兼容 450 種以上的 Excel 公式,可為用戶帶來親切的 Excel 使用體驗,并可滿足企業(yè)IT部門 Web Excel 組件開發(fā)、數(shù)據(jù)填報、Excel 類報表設(shè)計、表格文檔協(xié)同編輯等業(yè)務場景。
,作為數(shù)據(jù)填報的典型應用場景之一,可以讓業(yè)務人員在生產(chǎn)環(huán)境中,隨時隨地隨心的完成填報工作,而不受限于網(wǎng)絡(luò)。
離線填報的一般實現(xiàn)流程是:
因為涉及到異步操作的過程,需要對離線填報人員做出權(quán)限控制,這個時候密碼保護就顯得尤為重要了。
SpreadJS作為一款在線Excel編輯控件,目前僅支持工作簿密碼保護,暫不支持工作表密碼保護功能。不過SpreadJS在設(shè)計之初,為了保持對Excel最大的兼容度,在將Excel的工作表導入時,密碼相關(guān)部分也會保存進SpreadJS的ssjson中,通過spread.toJSON() 的序列化之后,我們也可以正常使用密碼保護功能,序列化的Json文件如下圖所示:
上圖中紅框所示部分就是工作表的密碼保護以及設(shè)置的密碼字符串。
我們只要將這一部分保留,就可以在我們設(shè)計的Excel模板上添加對應的工作表保護。
請注意,由于Excel本身會將密碼進行一次加密,所以我們無法直接修改json中的對應的鍵值來更改成我們想要的明文密碼,所以我們需要預先導入一次我們設(shè)置好對應密碼的Excel,用來提取密碼的相關(guān)信息。
可以按照下面的演示進行操作:
1. 首先導入一個空Excel,給對應的工作表設(shè)置對應的密碼保護
2. 將該Excel導入到SpreadJS中,然后通過spread.toJSON()來獲取整個json,通過代碼找到對應的密碼保護相關(guān)設(shè)置:
var json = spread.toJSON()
var protectOptions = json.sheets.Sheet1.protectionOptions
這里由于Excel中默認是在Sheet1這個工作簿上設(shè)置的密碼保護,所以需要用json.sheets.Sheet1.protectionOptions來獲取對應的protectOptions設(shè)置,并將其暫時存儲在變量中以備后用。
3. 接下來我們正常設(shè)計填報模板。
填報模板的設(shè)計原理是相同的,但設(shè)計方法不同,尤其體現(xiàn)在桌面設(shè)計器和在線表格編輯器中,這一點需要注意。
填報模板的設(shè)計原理:將臨時保存的protectOptions merge到最終生成的ssjson中。(SpreadJS的ExcelIO導出Excel時需要使用spread序列化toJSON生成的ssjson,因此通過js操作,我們就可以將之前臨時保存的protectOptions merge進去。)
由于在設(shè)計表單保護時勾選的操作也會更改protectionOptions,如果單純替換就會導致設(shè)計模板時候設(shè)置的表單保護選項丟失,例如:我們在設(shè)計模板的時候勾選了調(diào)整行列大小,如下所示:
此時,protectOptions中會記錄
如果我們將之前臨時保存的protectOptions直接替換,那么上述設(shè)置就會丟失。
所以這里需要如下操作:
首先,將目前的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中設(shè)置的密碼,這樣在離線填報時候就可以控制填報人員的操作權(quán)限了,填報人員也無法對有密碼保護的文件進行修改。
以上,就是SpreadJS在離線填報的場景下,實現(xiàn)密碼權(quán)限控制的方法,您可以在 完成密碼設(shè)置,并導入Excel中查看效果。
SpreadJS 是一款基于 HTML5 的純前端電子表格控件,兼容 450 種以上的 Excel 公式,憑借其 “高性能、跨平臺、與 Excel 高度兼容”的產(chǎn)品特性,備受以華為、蘇寧易購、天弘基金等為代表的企業(yè)用戶青睞。SpreadJS 為用戶帶來親切的 Excel 使用體驗的同時,滿足 Web Excel 組件開發(fā)、表格文檔協(xié)同編輯、數(shù)據(jù)填報、Excel 類報表設(shè)計等業(yè)務場景,極大降低了企業(yè)研發(fā)成本和項目交付風險。
本文轉(zhuǎn)載自
購正版 SpreadJS授權(quán)限時優(yōu)惠!最高立減萬元!點擊了解更多優(yōu)惠
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: