看純前端表格控件SpreadJS如何實現跨Workbook複製

點擊獲取SpreadJS工具下載

客戶在實際項目開發中,會有一張公用sheet存在別的文件中,在別的文件中,想要用到公用sheet中的部分數據時,直接從公用sheet中去複製即可。

此需求如果藉助SpreadJS提供的UI行爲實現是比較方便的,可以打開兩個瀏覽器窗口,藉助瀏覽器複製、粘貼功能,實現粘貼複製,但需要注意的是,瀏覽器的粘貼複製無法複製單元格公式。如果要保留公式,此時就需要使用SpreadJS內部的複製粘貼功能,但SpreadJS內部複製、粘貼必須操作在同一個Spread當中,因此需要將公用sheet添加到當前spread當中,本質就是將公用sheet toJSON()之後,再fromJSON()到當前Spread中,之後使用SpreadJS UI行爲完成複製粘貼即可。

但用戶的本質其實是不想在藉助任何UI行爲,希望在打開SpreadJS的同時,能將公用sheet中的部分數據就複製到當前Spread當中,從而實現一套自動化的複製粘貼流程,該需求實現的思路如下:

1. 複製公用sheet到當前Spread當中

spread.addSheet(spread.getSheetCount(),new GC.Spread.Sheets.Worksheet("common"))
let commonSheet = spread.getSheetFromName('common')

commonSheet.fromJSON(common)      //common指公用sheet toJSON之後生成的json結構

2. 選中公用sheet待複製區域

commonSheet.setSelection(0,0,2,3)
commonSheet.addSelection(4,0,2,3)

3. 執行copy命令

spread.commandManager().execute({
cmd: 'copy',
sheetName: 'common',
ignoreClipboard: true
})

4. 選中目標sheet要粘貼的位置起點

sheet.setSelection(1,0,1,1)

5. 執行粘貼操作

spread.commandManager().execute({
cmd: 'paste',
sheetName: sheet.name()
})

6. 粘貼完成後刪除公用sheet

setTimeout(function(){
spread.removeSheet(spread.getSheetCount() - 1)
},1000)

這裏注意到,刪除sheet包了一層setTimeout,這是因爲paste都是異步命令,需要等到這些操作完成之後在刪掉公用sheet,否則會報錯。

SpreadJS | 下載試用

純前端表格控件SpreadJS,兼容 450 種以上的 Excel 公式,具備“高性能、跨平臺、與 Excel 高度兼容”的產品特性,備受華爲、蘇寧易購、天弘基金等行業龍頭企業的青睞,並被中國軟件行業協會認定爲“中國優秀軟件產品”。SpreadJS 可爲用戶提供類 Excel 的功能,滿足表格文檔協同編輯、 數據填報、 類 Excel 報表設計等業務場景需求,極大的降低企業研發成本和項目交付風險。

本文轉載自葡萄城

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章