原創|產品更新|編輯:龔雪|2021-09-26 10:47:34.447|閱讀 522 次
概述:本文主要介紹如何使用SpreadJS組件實現跨Workbook復制,歡迎下載相關工具體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
客戶在實際項目開發中,會有一張公用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,兼容 450 種以上的 Excel 公式,具備“高性能、跨平臺、與 Excel 高度兼容”的產品特性,備受華為、蘇寧易購、天弘基金等行業龍頭企業的青睞,并被中國軟件行業協會認定為“中國優秀軟件產品”。SpreadJS 可為用戶提供類 Excel 的功能,滿足表格文檔協同編輯、 數據填報、 類 Excel 報表設計等業務場景需求,極大的降低企業研發成本和項目交付風險。
本文轉載自
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: