轉帖|使用教程|編輯:鮑佳佳|2021-01-22 16:38:48.290|閱讀 401 次
概述:本章將帶領大家繼續擴展 Vue 3 這個項目原型,實現數據綁定、模板文件導入/更新/導出和數據透視表等功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本章將帶領大家繼續擴展 Vue 3 這個項目原型,實現數據綁定、模板文件導入/更新/導出和數據透視表等功能。
設計思路
SpreadJS 組件介紹
SpreadJS是一款基于 HTML5 的原生JavaScript組件,兼容 450 種以上的 Excel 公式,提供高度類似 Excel 的功能,主要用于開發 Web Excel 組件,實現多人協同編輯、高性能模板設計和數據填報等功能模塊,組件架構符合UMD規范,可以以原生的方式嵌入各類應用,并與前后端技術框架相結合。
集成 SpreadJS 組件
首先在components/ SpreadSheet.vue中集成SpreadJS,代碼如下圖所示:
<template> <div> <div ref="ssHost" style="height:700px;width:100%;text-align: left;"></div> </div> </template> <script> import { onMounted, ref} from "vue"; import "../../node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css" import GC from "@grapecity/spread-sheets" export default { name: 'SpreadSheets', props: { }, setup(props, {emit}) { const ssHost = ref(null); onMounted(() => { var workbook = new GC.Spread.Sheets.Workbook(ssHost.value); emit("workbookInitialized", workbook) }); return { ssHost }; } } </script>
具備步驟如下:
import SpreadSheets from '../components/SpreadSheets.vue' import {ref} from "vue" import axios from "axios" import GC from '@grapecity/spread-sheets' import ExcelIO from '@grapecity/spread-excelio'
<template> <div> <button @click="load($event)">加載</button> <button @click="update($event)">更新</button> <SpreadSheets v-on:workbookInitialized="workbookInitialized"></SpreadSheets> </div> </template>
let workbook = undefined; let workbookInitialized=(wb)=>{ workbook = wb }
功能擴展:Excel 文檔導入/更新/導出
Excel 文檔的導入/更新/導出功能可通過自定義“加載”、“更新”和“導出”按鈕實現,在SpreadSheet組件中添加自定義按鈕的思路,與上篇designer組件的設計思路一致:
let load = (e)=>{ let formData = new FormData(); formData.append("fileName", "path"); axios.post('spread/loadTemplate', formData, { responseType: "json", }).then((response) => { if(response) { alert("加載成功"); templateJSON = response.data; workbook.fromJSON(templateJSON); } }).catch((response) => { alert("錯誤"); }) }
let update = (e)=>{ let spreadJSON = JSON.stringify(workbook.toJSON()); let formData = new FormData(); formData.append("jsonString", spreadJSON); formData.append("fileName", "fileName"); axios.post('spread/updateTemplate', formData).then((response) => { if(response) { alert("更新成功"); } }).catch((response) => { alert("錯誤"); }) }
//export SpreadJS json to excel file excelio.save(json, function (blob) { //do whatever you want with blob //such as you can save it }, function (e) { //process error console.log(e); });
功能擴展:數據透視表
SpreadJS內置了數據透視表功能,通過將其集成到項目中,便可以使用數據透視表,該表支持排序、過濾等條件格式,可以按不同維度分析數據,并且可以自定義主題。
SpreadJS 的數據透視表支持兩種格式的數據源:
若使用數據透視表,需要添加如下鏈接到文檔的開始部分:
<head> ... <script src='.../spreadjs/gc.spread.sheets.all.x.x.x.min.js' type='text/javascript'> </script> <script src='.../spreadjs/plugins/gc.spread.pivot.x.x.x.min.js' type='text/javascript'> </script> </head>
使用一個表格的名稱去創建數據透視表:
let spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); let sheet1 = spread.getSheet(0); let sheet2 = spread.getSheet(1); sheet1.setRowCount(250); let table = sheet.tables.add('table1', 0, 0, 200, 200); sheet1.setArray(0, 0, pivotSales); let pivotTable = sheet2.pivotTables.add("PivotTable", "table1", 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);
也可使用工作表的一個范圍公式創建數據透視表:
let range = "=Sheet2!A1:D4"; let pivotTable = sheet2.pivotTables.add("PivotTable", range, 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);
通過切換路由可以看到 SpreadJS 與在線表格編輯器可以正常切換顯示。在編輯器中修改加載的Excel文件,點擊工具欄“更新”按鈕,再切換至SpreadJS組件,點擊“加載”按鈕便可以看到剛才所修改的文件已被更新。
示例代碼
以上就是在Vue 3中集成SpreadJS與在線表格編輯器的全部內容,除了 Vue ,SpreadJS 還可以原生的方式嵌入各類應用(桌面軟件、app、web),并與各類前后端技術框架(java、.NET、JavaScript、Vue、React 等)相結合。
通過集成 SpreadJS ,開發者可研發出高性能的公式計算、在線導入導出 Excel 文檔、數據透視表和可視化分析功能,為系統使用者提供靈活易用的用戶體驗。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: