前言|问题背景本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
(资料图片仅供参考)
SpreadJS是纯前端的电子表格控件,可以轻松加载 Excel 工作簿中的数据并将它们呈现在前端浏览器应用的网页上。
在某些情况下,您可能需要将来自多个工作簿的数据(例如,来自不同部门的月度销售报告)合并到一个工作簿中,实现此目的的一种方法是使用多个隐藏的 SpreadJS 实例来加载所有工作簿,然后将它们合并到一个电子表格中。
此文将向您展示如何合并多个 Excel 工作簿并将它们作为单个电子表格显示在您的前端浏览器应用中。
设置项目要加载 SpreadJS,我们需要添加主要的 JavaScript 库和 CSS 文件。由于还要加载 Excel 文件,因此我们需要添加 ExcelIO JavaScript 库。这可以通过导航到 HTML 文件的位置并使用 NPM 安装 SpreadJS 文件来完成:
npm i @grapecity/spread-sheets @grapecity/spread-excelio
然后在 HTML 代码中引用这些文件:
Multiple Sheet Merging <script type="text/javascript" src="./node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js"></script><script type="text/javascript" src="./node_modules/@grapecity/spread-excelio/dist/gc.spread.excelio.min.js"></script>
紧接着我们将添加一个 DIV 元素来承载 SpreadJS 实例。
我们要添加一些代码来初始化 Spread 实例、ExcelIO 和一个数组来保存隐藏的 Spread 实例,我们将在合并之前使用它来加载所有 Excel 文件:
var hiddenWorkbooks, hiddenSpreadIndex, excelIO, spread;window.onload = function () {hiddenSpreadIndex = -1;hiddenWorkbooks = new Array();excelIO = new GC.Spread.Excel.IO();spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));}在前端应用中加载 Excel 文件
对于这个页面,我们将添加代码让用户加载任意数量的工作簿,然后单击一个按钮将它们合并为一个并在 SpreadJS 中显示它们。为此,我们可以添加以下 HTML 代码:
Workbooks to merge:
用户点击文件输入选择一个文件,然后点击“添加工作簿”按钮。这将创建一个新的隐藏 DIV 元素来保存将用于临时加载 Excel 文件的 SpreadJS 实例,并将它们添加到隐藏工作簿列表中:
function CreateNewSpreadDiv() {hiddenSpreadIndex++;var newDiv = document.createElement("div");newDiv.style.cssText = "display:none; width: 800px; height: 600px; border: 1px solid gray";newDiv.id = "hiddenWorkbook" + hiddenSpreadIndex;document.body.appendChild(newDiv);var hiddenWorkbook = new GC.Spread.Sheets.Workbook(document.getElementById(newDiv.id));hiddenWorkbooks.push(hiddenWorkbook);AddWorkbookToImportList();}
然后,该函数使用 ExcelIO 代码调用另一个函数将 Excel 文件加载到隐藏的 Spread 实例中:
function AddWorkbookToImportList() {var excelFile = document.getElementById("fileDemo").files[0];excelIO.open(excelFile, function (json) {var workbookObj = json;hiddenWorkbooks[hiddenSpreadIndex].fromJSON(workbookObj);AddWorkbookNameElement(document.getElementById("fileDemo").files[0].name);document.getElementById("fileDemo").value = "";}, function (e) {console.log(e);});}
为了向用户提供反馈,我们将显示他们将要合并的文件列表,此处显示为“AddWorkbookNameElement”函数:
function AddWorkbookNameElement(workbookName) {if (document.getElementById("workbookListBlock").style.display == "none") {document.getElementById("workbookListBlock").style.display = "block";}var newDiv = document.createElement("LI");var textNode = document.createTextNode(workbookName);newDiv.appendChild(textNode);document.getElementById("workbookList").appendChild(newDiv);}在前端应用中合并 Excel 文件
当用户准备好最终将所有工作簿合并为一个时,他们可以单击“合并工作簿”按钮,将每个工作簿中的每个工作表复制到页面上可见的 SpreadJS 实例:
function MergeWorkbooks() {for (var w = 0; w < hiddenWorkbooks.length; w++) {if (GC.Spread.Sheets.LicenseKey == null) {for (var s = 1; s < hiddenWorkbooks[w].getSheetCount(); s++) {CopySheet(w, s);}} else {for (var s = 0; s < hiddenWorkbooks[w].getSheetCount(); s++) {CopySheet(w, s);}}}spread.removeSheet(0);}function CopySheet(workbookIndex, sheetIndex) {spread.addSheet();var sheetJson = JSON.stringify(hiddenWorkbooks[workbookIndex].getSheet(sheetIndex).toJSON());spread.suspendPaint();hiddenWorkbooks[workbookIndex].getNamedStyles().forEach(function (namedStyle) {spread.addNamedStyle(namedStyle);});spread.getSheet(spread.getSheetCount()-1).fromJSON(JSON.parse(sheetJson));spread.resumePaint();}
需要注意的一件事:如果您的工作簿正在使用命名样式,则需要将此样式添加到可见的 SpreadJS实例中,否则它将无法正确显示,因为我们正在复制单个工作表。这显示在上面的函数中,可以添加到“spread.addNamedStyle()”。
添加该代码后,您现在可以加载多个 Excel 工作簿并使用 SpreadJS 将它们合并为一个。想要尝试该功能或查看 SpreadJS 的其他惊人功能,可前往葡萄城官网立即下载试用版!
关键词:
- 家电行业进入多元化 我国智能家电市场规模进一步增
- 佛山向欧盟出口供暖设备同比增长154.4% “暖家电”
- 格兰仕家用电器持续增持 占公司总股本1.24%
- 面板厂商持续加码产能 OLED能否迎来爆发式增长?
- 洗鞋机是一匹“黑马”吗? 能否创造下一个风口
- 8月空调行业最忙碌 它们将哪些新动作又将如何惊艳
- 如何在前端应用中合并多个 Excel 工作簿
- 安徽工业产业数智化转型峰会在合肥举行 观速讯
- 机构强烈推荐1只个股-更新中
- Q1全球智能手表市场:苹果下降20%、三星下降15%、华
- 良品铺子:今年线上渠道占比会略下降 时讯
- 当前关注:韩国电商Coupang计划进军印度市场
- 世界观热点:崔康熙带来首次连胜,泰山终于不再“失
- 天天要闻:网经社张周平:我国跨境电商规模增长迅猛
- 焦点要闻:群智咨询:预计6月显示器面板涨价范围进
- 通讯!贵州大学图书馆
- 特写:1小时59分钟的飞行 见证国产大飞机C919“成
- 地震发生前有哪些前兆_地震前兆有哪些现象
- 意甲西甲前四确定!五大联赛18支晋级欧冠队全部产生
- 夏普部分55岁以上、约700名高管将提前退休! 最资讯
- 每日精选:成丰货运司机端 美特好 汇通启富12款AP
- 消息称台厂计划在6月份全面调涨电视等三大应用报价
- 血糖高能吃花生米吗_血糖高能吃花生吗_世界最新
- 百度公布电商新品牌“百度优选”
- 前沿资讯!京东云平台解决方案业务在2022年下半年市
- 世界微动态丨⼀季度百度搜索促成的季度GMV同⽐增⻓5
- DRG概念拉升 国新健康爆拉-每日头条
- 宁陵县的乡镇有哪些_河南省宁陵县有多少个乡镇简介
- 环球即时:乌方称首都基辅遭到无人机空袭
- V观财报|东风汽车澄清,武汉财政局登报催收对象不
- 全球视讯!【聚焦618】京东人均购买618预售商品数量
- 华凯易佰:跨境电商行业整体增速逐渐回落到正常水平
- 京东家政自营服务在深圳上线 热门看点
- 【电商周报】5月第四周:阿里回应网传裁员 淘宝买
- 环球信息:唏嘘!从英超冠军到降级莱斯特城“9年如梦
- 天子山大桥项目获批 全省交通“硬联通”三年行动项
- 重点聚焦!怡俊集团控股(02442):稳定价格期结束、并
- 最新奥运积分排名出炉!伊藤美诚上升到第3,有希望
- 齐鲁石化—胜利油田“双百”二氧化碳输送管道如期中
- 《速激10》里的金色“超跑”长这样
- 中金基金周嘉辰: 关注资产可持续发展能力 创造长
- “齐鲁德比”山东泰山1:0力克青岛海牛,刘彬彬破门
- 每日快讯!东决G6裁判报告:官方解释多给0.9秒事件
- 悲喜两重天!莱斯特城崩溃落泪,埃弗顿庆祝似夺冠,
- 张伟丽、李景亮齐聚上海冲击金腰带?UFC透露:更高
- 就业形势异常严峻!印度“经济奇迹”背后藏“定时炸
- 赞!南充八旬老人路边摔倒,热心市民伸援手“扶起”
- 播报:阿根廷下调大豆产量预期 增加自邻国进口量
- 每日快看:阿尔法罗密欧将在 2027 年实现全电动
- 焦点速递!木耳可以放一个月吗会坏吗 木耳放一个月
- 【当前热闻】广东佛山可提供西门子燃气灶维修服务地
- 品读|你有过独自一人上学的经历吗?
- 盗图投诉内容怎么写_盗图-世界观察
- 基层动态丨加钢淬火 锻造水域救援尖兵 即时看
- 中超-安杜哈尔读秒绝杀何宇鹏远射造险 大连人0-1津
- 电线的小说作品全集(电线的小说作品)
- 中国boy × 你 白切黑(我好像真的不适
- 焦点速递!沈石溪狼王梦简介_沈石溪简介100字
- 此人本是北宋名相,却因情商太低让皇帝御驾亲征,最
- 焦点讯息:无名指的标本_关于无名指的标本介绍
- 热火噩梦3秒钟,一切都是命|天天动态
- 世界短讯!不厚道是什么意思_不厚道是啥意思
- 天天快资讯:宁波到南京高铁多少时间_宁波到南京高
- 环球百事通!知名编剧宋方金来蓉分享:讲好故事有“
- 天天速讯:大变天!斯坎迪奇女排全面洗牌,9人先后
- 崔泰兴_天天快播报
- 让新人有机会创作出成都好故事 50余位“准编剧”今
- 环球要闻:四川省委书记王晓晖调研天齐锂业奎纳纳氢
- 达意隆(002209.SZ)拟推390.5万股限制性股票激励计划
- 罗平锌电: 2022年年度股东大会决议的更正公告|全球
- 新业态注入新动能 我国文旅市场保持创新活力加快复
- 资本公积金转增股本的条件_资本公积金转增股本 全
- 【全球速看料】为iPhone 15系列量产做准备:富士康
- 紫光股份拟收购新华三49%股权,247亿大手笔能否引估
- 言论丨埃杜:“说阿森纳‘失败’是我不会使用的词,
- 烽味NBA|连追三场!就算巴特勒抢七爆发,热火也很
- 人社部养老金最新消息公布,2023年养老金涨幅确定,
- 泰山线路图来了!解锁泰山自由行!
- LPL战队铺张浪费太严重,一顿饭要吃5000块,这算正
- 白俄罗斯疫情(belial)
- 专业口腔医生用画笔做科普 《出发!爱牙五侠》用故
- 地铁口精装洋房,建工倒挂价。
- 女性导演第三度问鼎金棕榈,坂元裕二、役所广司各有
- 全球新消息丨如何修剪楼梯_男朋友送女朋友礼物
- 【环球速看料】拜仁4-0领先多特时德甲就已经结束了
- 安宫牛黄丸哪个牌子的好一些_安宫牛黄丸哪个牌子的
- 世乒赛最后悬念!王楚钦冲3冠,陈梦冲大满贯,樊振
- 世界最新:梅西领衔阿根廷队中国行阵容,劳塔罗、迪
- “泉”天候响应、“泉”时段待命!看普陀这里如何守
- 苏炳添2胎再得子!陪伴爱妻弥补5年前遗憾,最后一次
- 说说那个登上热搜榜一的“假球”,马龙真会保送王楚
- 每日热文:百亩金银花迎来采摘季 助力当地群众“钱
- 海通国际:给予浙江鼎力增持评级,目标价位68.86元-
- 运动+音乐 沉浸式音乐剧《追光巨星》为大运会助力
- 重点聚焦!淅川县九重镇人民政府志愿服务队(关于淅
- 【天天热闻】C919刚一落地,外媒的评论就跟上了
- 全新林肯冒险家对比奥迪Q3,谁是豪华SUV市场焦点|每
- 有图有真相|全景还原怀特绝杀 热火最后一防究竟做
- 空调制热和辅热的区别(空调制热和辅热的区别是什么
- 天天短讯!郑州电费收费标准_郑州电费收费标准
- 环球视讯!万兴科技吴太兵:AIGC将呈现三大新趋势
- 焦点热文:涤纶和锦纶的区别图片(涤纶和锦纶的区别
- 热头条丨粤西地区机械专业培训_粤西地区
- 通讯!正版office2019多少钱_正版office多少钱
- 苏炳添官宣二胎得子:网友刷屏送上祝福 百米飞人再
- 全球今亮点!永琪欣荣成亲第几集_永琪和欣荣圆房是