当前位置: 首页 > news >正文

已解决:vue-office/excel 多个sheet点击切换,滚动条高度不重置,表格视图位置不正确

看到已经有人提了 issue(https://github.com/501351981/vue-office/issues/285)
官方暂时还没有回复,那就先自己手动加一个 切换sheet的重置 吧

核心代码

<script setup lang="ts">
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'const excelRef = ref()function errorHandler() {console.log('渲染失败')
}function renderedHandler() {console.log('渲染完成')// 修复插件bug:切换sheet 视图、滚动条高度未重置const ele = document.querySelector('.x-spreadsheet-menu')if (ele) {excelRef.value = eleele.addEventListener('click', resetScrollbar)}
}// 重置滚动条位置的函数
function resetScrollbar() {// 横向滚动条const scrollbarElementX = document.querySelector('.x-spreadsheet-scrollbar.horizontal')// 竖向滚动条const scrollbarElementY = document.querySelector('.x-spreadsheet-scrollbar.vertical')// 竖向重置到顶部if (scrollbarElementY) {// 这一个延时器先保证excel视图的正确渲染setTimeout(() => {scrollbarElementY.scrollTop = 1})// 这一个延时器再重置滚动条高度setTimeout(() => {scrollbarElementY.scrollTop = 0}, 10)}// 横向重置到左侧if (scrollbarElementX) {// 这一个延时器先保证excel视图的正确渲染setTimeout(() => {scrollbarElementX.scrollLeft = 1})// 这一个延时器再重置滚动条高度setTimeout(() => {scrollbarElementX.scrollLeft = 0}, 10)}
}onUnmounted(() => {if (excelRef.value) {excelRef.value.removeEventListener('click', resetScrollbar)}
})
</script><VueOfficeExcel:src="excelUrl"@rendered="renderedHandler"@error="errorHandler"
/>
  • 如果直接将滚动条重置为0,会发现滚动条位置对了,但是试几次就发现 表格内容的位置没有重置,所以先让视图正确(移动到1的位置,触发内容变化),再重置为0
  • 延时器的 时间差 定的比较小,滚动条 从1至0 距离也十分的小,尽可能让用户对视图的变化无感

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 文件包含漏洞--pyload
  • 生物学家做不出 AlphaGO,但也在创造生命……
  • 学习笔记-系统框图传递函数公式推导
  • pinia安装及简介
  • AI学习记录 -使用react开发一个网页,对接chatgpt接口,附带一些英语的学习prompt
  • 在vue中优雅地异步引入(懒加载)腾讯地图API
  • tinyxml2的入门教程
  • 【进阶篇-Day12:JAVA中stream流、File类的介绍】
  • python每日学习:numpy库的用法(上)
  • .net 连接达梦数据库开发环境部署
  • 线性代数重要知识点和理论(下)
  • SpringBoot-21 SpringBoot微服务的发布与部署(3种方式)
  • photoshop学习笔记——移动工具
  • ROS参数服务器增删改查实操Python
  • 网络安全常见错误及解决办法(更新中)
  • 深入了解以太坊
  • hexo+github搭建个人博客
  • 【RocksDB】TransactionDB源码分析
  •  D - 粉碎叛乱F - 其他起义
  • leetcode388. Longest Absolute File Path
  • October CMS - 快速入门 9 Images And Galleries
  • Phpstorm怎样批量删除空行?
  • Python_网络编程
  • SpingCloudBus整合RabbitMQ
  • 百度小程序遇到的问题
  • 编写符合Python风格的对象
  • 翻译--Thinking in React
  • 诡异!React stopPropagation失灵
  • 前嗅ForeSpider教程:创建模板
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 数据结构java版之冒泡排序及优化
  • 双管齐下,VMware的容器新战略
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 函数计算新功能-----支持C#函数
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​插件化DPI在商用WIFI中的价值
  • # SpringBoot 如何让指定的Bean先加载
  • (libusb) usb口自动刷新
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (四)js前端开发中设计模式之工厂方法模式
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .Mobi域名介绍
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net与java建立WebService再互相调用
  • @DataRedisTest测试redis从未如此丝滑
  • @EnableWebSecurity 注解的用途及适用场景
  • @PostConstruct 注解的方法用于资源的初始化
  • []新浪博客如何插入代码(其他博客应该也可以)