首页 > 其他分享 >Element-ui table进阶使用

Element-ui table进阶使用

时间:2024-08-21 14:52:14浏览次数:8  
标签:进阶 导出 单元格 excel 表头 ui table class

最近项目有多个报表开发的需求,我采用的是凤翎前端组件框架(基于element-ui开发),大伙可以直接参考element-ui组件库文档,把标签中的fks替换为el即可。下面我会按顺序一一展开细说这些需求:

1、有多级表头,合并单元格

如下图所示,降雨量是顶级表头,下面是二三级表头,最后才是表身部分。多级表头很好实现,直接在上一级table-column下创建多个同级table-column就行,一层套一层自由嵌套。

合并单元格就用自带的span-method,比如下图中红框部分单元格,先通过行列index定位,然后return一个数组或者对象,里面前者值为行,后者值为列,比如[1,3]意思就是1行放3列,{rowspan:2,colspan:1}意思就是2行放1列,两种写法都行。

2、能展示数据(非常规行列显示)

通常图表展示数据从上往下是一致的,像下图左右两边数据结构部分一致、部分不同,这就需要专门拼接数据结构。

Table示例中数据格式如下,每个对象对应每一行,对象里的每个参数对应行中每列单元格,所以我们可以先拼接每一行的对象,如下图代码所示,最后进行单元格合并。

3、在table某些区域画框

可以通过给对应单元格设置上下左右边框样式实现,首先用table的cell-class-name属性给单元格设置class名,还是用columnIndex和rowIndex来判断想要设置的单元格,如下图所示。

然后设置对应的css样式即可。

4、特定单元格颜色要能根据不同值显示不同颜色

这个和第3条一样用table的cell-class-name属性给单元格设置class名,只不过要通过传入row的值判断并设置不同class名称。

5、特定单元格可以编辑(鼠标移入或者双击开始编辑,鼠标移出结束编辑,并且编辑后背景色要变成白色),并保留两位小数

编辑可以用cell-click和cell-mouse-leave配合slot-scope实现;替换背景色可以将之前单元格class名称移除后另外添加新class名称实现;编辑时保留几位小数可以直接用这行代码οninput="value=value.replace(/[^\d^\.]+/g,'').replace(/^0+(\d)/,'$1').replace(/^\./,'0.').match(/\d+.?\d{0,1}/)",最后面的数为几就是保留几位小数。

6、可以前端导出table为excel(还是推荐后端拼接模板并导出)

第一张报表用的是pikaz-excel-js插件,git地址为https://github.com/pikaz-18/pikaz-excel-js,网上文档虽然多,但很多都很基础,官方文档介绍也很简单,没有很详细深入,好在导出的excel看着还原度很高。但用户使用时发现提供的模板和导出的excel文件还是不完全一样,打印时会有其它问题产生,并且前端拼接模板耗时久,所以后面报表还是由后端统一拼接并接口返回文件流供前端导出。个人建议报表导出功能优先后端来写。

7、可以选择日期、时间段

8、如何让table强制刷新

有时候我们希望table数据变化时刷新table,但直接修改绑定的data对象不会生效,这时候可以给table绑定一个key值,想要强制刷新table时修改这个key值就行。

标签:进阶,导出,单元格,excel,表头,ui,table,class
From: https://blog.csdn.net/hoaxxcj/article/details/141392399

相关文章

  • Qt Quick 消息列表视图组件
    目录开发环境简介预览图代码main.qmlMessageQueueView.qml开发环境Qt版本:6.5.3构建:cmake+minGW64-bit简介这是一个纯QML程序,功能是一个消息列表的功能,可以进行插入,删除,清空等操作预览图![2024-08-2114-28-39_converted](images/2024-08-2114-28-39_converted.gif)......
  • 异步编程CompletableFuture的一些使用demo
      publicstaticThreadPoolExecutorexecutor=newThreadPoolExecutor(5,5,5L,TimeUnit.SECONDS,newLinkedBlockingQueue<>(1000),newThreadPoolExecutor.CallerRunsPolicy());publicstaticvoidmain(String[]args)throwsException{Complet......
  • 线段树进阶
    线段树进阶目录线段树进阶线段树+贪心/线段树+排序例题:1.洛谷P1607FairShuttleG2.洛谷P1937BarnAllocationG3.洛谷P1972HH的项链线段树+双指针例题:1.洛谷P1712区间线段树+多个标记维护例题:1.洛谷P2572序列操作线段树+二分例题:1.洛谷P4344脑洞治疗仪2.洛谷P2824排......
  • 【pyautogui】 模拟鼠标、键盘操作库
    【背景】模拟鼠标、键盘操作【问题】1、pyautogui.move和pyautogui.moveTo的区别?pyautogui.moveTo(x=None,y=None,duration=0.0,tween=linearTween)这个函数会将鼠标光标直接移动到指定的屏幕坐标 (x,y)。如果 duration 参数被设置为非零值(以秒为单位),则光标会平滑......
  • Qt_ui生成界面原理
    QtUI界面生成原理在使用Qt开发图形用户界面(GUI)时,我们可以使用QtDesigner创建.ui文件,这个文件描述了界面的布局和组件信息。在编译项目时,这些信息会被转换为实际的代码,生成一个可视化的界面。下面是详细的步骤解释:1.创建.ui界面文件本质:.ui文件是一个XML......
  • 扫雷基础与进阶(全面解析)
    前言:对于基础版扫雷,你需要掌握的知识有:循环与分支、函数基础、二维数组以及随机数函数(不懂可以看看我这篇文章《随机数函数和猜数字游戏》,需要了解rand,srand,time这三个函数);对于进阶版扫雷,你还得了解函数递归调用的思想。注意:如果想不看解析只看代码,可以直接阅读“省略......
  • Elementui-Plus动态渲染图标icon
    一、在main.ts引入相关依赖:import*asElementPlusIconsVuefrom'@element-plus/icons-vue'for(const[key,component]ofObject.entries(ElementPlusIconsVue)){app.component(key,component)}二、使用component组件进行动态加载<componentclass="icons&qu......
  • HashMap和HashTable的区别
    目录1.同步性2.性能3.空键和空值4.迭代器5.接口1.同步性(1)HashMap 是不同步的,意味着它不是线程安全的。多个线程可以同时访问HashMap,可能会导致数据不一致问题。如果在多线程环境中使用HashMap,通常需要外部同步。(2)HashTable 是同步的,意味着它是线程安全的......
  • 在 React 项目中 Editable Table 的实现
    在React项目中EditableTable的实现 我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:佳岚可编辑表格在数栈产品中是一种比较常见的表单数据交互方式,一般都支持动态的新增、删......
  • Python爬虫进阶技巧
    在掌握了基本的网页数据提取与解析技能后,我们将进一步探讨Python爬虫的进阶技巧,以应对更加复杂的网络环境和数据抓取需求。动态网页爬取动态网页是指那些通过JavaScript动态生成内容的网页。这类网页的内容在初次加载时并不包含在HTML源代码中,因此无法直接使用传统的爬虫方法......