Vue实现复制excel表格内容粘贴至网页
Vue实现复制excel表格内容粘贴至网页
有一个项目要求复制excel表格内容粘贴至网页表格,并且自动生成格式(合并单元格等)
(别问为什么不直接上传excel表格,用户不喜欢。。。)
最后决定的做法是根据页面生成一个excel模板,如下:
上图模板前三行(我这里项目要求前三行合并)对应下图
粘贴后效果如下:
大概思路就是
1.根据项目需求在页面下载excel表格模板(用处:用户填写后复制内容并粘贴到网页端)
2.前端部分用handsontable等表格组件匹配填写数据
3.renderer下表格确保固定项目部分填写(或者直接在模板里面写,这样做可以确保准确性)
4.表格内容变动后动态合并新增部分
excel表格生成模板下载
因为我的项目表格是写死的,直接保存在后端下载就可以了。
handsontable可以直接前端数据导出,具体方式参考:
https://www.cnblogs.com/malng/p/10755353.html
Handsontable
表格组件其实用啥都行,这个就不细说了
表格格式
data() {return {//hansontable一堆设置都在这里,所以只说明主要部分hotSettings: {//数据部分,这个就不多说了data: [{ orgId: 11000, hasLinedata: '否', budLinedatas: [] },{ orgId: 11000 },{ orgId: 11000 }],//这个就是合并单元格的数据,从第Row行开始,合并Rowspan个单元格,列也一样//因为是初始化的数据,所以只要第一个,其他的我们后面再写mergeCells: [{ row: 0, col: 0, rowspan: 3, colspan: 1 },…………………………{ row: 0, col: 24, rowspan: 3, colspan: 1 }],//这个就是表格设计了,自己参考handsontable文档吧colHeaders: [……], { data: 'orgId', // 部门,readOnly: true,className: 'htMiddle htCenter notread' },//renderer部分,写死一部分内容啥的,renderer: function(instance, td, row, col, prop, value, cellProperties) {if (row % 3 === 0) {Handsontable.dom.empty(td)td.innerText = '每三行第一行是啥'Handsontable.dom.addClass(td, 'htMiddle htCenter notread')return td} else if (row % 3 === 1) {Handsontable.dom.empty(td)td.innerText = '每三行第2行是啥'Handsontable.dom.addClass(td, 'htMiddle htCenter notread')return td} else {Handsontable.dom.empty(td)td.innerText = '每三行第3行是啥'Handsontable.dom.addClass(td, 'htMiddle htCenter notread')return td}}},
表格内容变动后动态合并新增部分
这部分其实就是监控数据变化然后合并单元格
三种方式参考了这里:
https://blog.csdn.net/Welkin_qing/article/details/81585786
不过afterchange我只用了最后一个方法才成功:
//引入handsontable的时候先绑定一下after-change,就是数据变更时会调用绑定的方法
<!-- 绑定afterchange动态合并单元格 --><hot-tableref="textHot":settings="hotSettings":after-change="mergeCell"class="table_info"/>methods: {//动态监视粘贴内容自动生成行数并合并单元格mergeCell(changes) {// 有变化if (changes) {// 遍历变化行数changes.forEach(([row]) => {// 只对3的倍数行进行合并//这里条件判断可以写复杂一点,确保粘贴非3倍数时候的处理,我偷懒所以。。if ((row/3)===this.hotSettings.mergeCellsCount) {// 合并处理this.hotSettings.mergeCells.push({ row: row, col: 0, rowspan: 3, colspan: 1 },…………………………{ row: row, col: 24, rowspan: 3, colspan: 1 });// 只合并一次提高运行效率,不然粘贴大量数据多次合并会卡this.hotSettings.mergeCellsCount++}});}
Vue实现复制excel表格内容粘贴至网页相关推荐
- 实现复制excel表格内容粘贴至网页的功能
需求 要求从excel表格中复制一列,粘贴到网页的input框中,并自动赋值到对应的input框里 实现过程 使用监听paste事件,根据事件提供的clipboardData属性,获取数据 HTML代 ...
- 为何excel中数据无法计算机,电脑中excel表格内容无法复制的解决方法
一位朋友反馈自己在Excel中录入完数据后想要进行复制,将工作表内容直接复制到另一个表中去,可是操作时却失败了.那么,这该怎么办呢?下面是小编给大家分享的电脑中excel表格内容无法复制的解决方法.有 ...
- excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变
excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变 == excel 粘贴的时候,经常格式就乱了,我们想要保持原来的样式. 有的之后粘贴后,右下角有个 图标 可以选择 保留原格式. ...
- vue数组转Excel表格导出
vue数组转Excel表格导出 安装依赖 npm i xlsx vue组件 <template><div><el-button type="success&qu ...
- java 简单获取Excel表格内容(初学者)
java 简单获取Excel表格内容(初学者) 代码: package cn.ccaih.read;import org.apache.poi.ss.usermodel.Cell; import or ...
- vue 在线编辑excel表格(原生和使用组件的两种方式)
vue 在线编辑excel表格(原生和使用组件的两种方式) top表头和left表头格式的表格 <template><div><!-- 用组件写的编辑表格 -->& ...
- excel表格内容合并的技巧?
今天跟大家分享一下excel表格内容合并的技巧? 1.打开演示文件,如下图要求将多个表格合并到一起. 2.首先我们点击下图选项 3.点击[汇总拆分]-[合并多表] 4.勾选要合并的工作表 5.然后根据 ...
- vue中导出Excel表格
vue中导出Excel表格 项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地.当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体 ...
- Excel表格如何保存为网页形式
Excel表格如何保存为网页形式 目录 Excel表格如何保存为网页形式 1.在"文件"选项卡中点击"另存为" 选择"其他格式" 2.在&q ...
最新文章
- python运行程序-Python中四种运行其他程序的方式
- [Android工具]安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
- Spring boot + mybatis + oracle代码生成器
- Zookeeper数据一致性原理
- 正则匹配后缀 html,如何用正则匹配后缀名不为.jpg, .css, .js, .html, .htm, .png的文件...
- python c/s模式下的内存监控模拟代码
- c语言生成1 100随机数求和,c语言 产生1~100随机数,输入一个数字,和第x个随机数一致的话,计算1~x个随机数的和...
- java输出date_Java萌新的小小总结:Date日期类数据以给定格式打印输出
- 薛定谔Maestro教程--用户界面1
- js获取当前html路径,JavaScript获取当前url根目录(路径)
- 谷歌AI版“你画我猜”刷屏朋友圈,背后是这样的原理!
- 戴尔服务器u盘装系统看不见磁盘,戴尔电脑u盘装系统找不到硬盘怎么解决
- 回溯算法-数独(计算器)
- C++内存管理机制—Primitives笔记
- wd移动硬盘不能识别_西部数据移动硬盘无法识别恢复
- Microsoft SQL Server 2000 Service Pack 3a
- mac安装MongoDB与启动
- 【C语言进阶】常见数据格式转换处理的代码实现
- 网络兼职圈套你知道多少?拓商提醒您谨防被骗
- 机器学习高阶理论知识列表