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

ant design含嵌套子列数据遍历插入docx table

文章目录

  • 发现宝藏
  • 设计思路:
  • 原因分析:

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

这段代码的目的是创建一个Word文档中的表格数据行。以下是设计思路和原因的详细解析:

设计思路:

  1. 映射数据源:使用JavaScript的map函数遍历dataSource数组,为每个数据源对象创建一个表格行(TableRow)。
  2. 处理嵌套列:表格可能包含嵌套的列,这意味着某些列可能包含子列。因此,代码需要能够处理这种情况。
  3. 单元格内容:对于每个数据源对象,需要创建一个单元格(TableCell)集合,这些单元格将包含对应列的数据。

原因分析:

  • dataSource.map(data => {...})
    • dataSource是一个包含多个数据对象的数组,每个对象代表表格中的一行数据。
    • 使用map来遍历这个数组,并为每个数据对象创建一个TableRow
  • columns.flatMap(column => {...})
    • columns是一个定义表格列的数组,其中可能包含嵌套的子列。
    • flatMap用于处理每个列,如果列有子列(column.children),则需要将子列平铺开来创建多个单元格;如果没有子列,则直接创建一个单元格。
    • flatMap在这里比map更合适,因为map会返回一个二维数组,而flatMap会自动将子数组平铺成一维数组,这正是我们需要的。
  • if (Array.isArray(column.children)) {...} else {...}
    • 这个条件检查是为了判断当前列是否有子列。
    • 如果有子列(column.children是一个数组),则使用map遍历子列,为每个子列创建一个单元格。
    • 如果没有子列,则直接创建一个单元格,并将当前列的数据放入单元格中。
  • new TableCell({ children: [new Paragraph(data[child.dataIndex])] })
    • 创建一个新的单元格,单元格的子元素是一个段落(Paragraph),段落的内容是数据源对象中对应列索引(child.dataIndex)的值。
    • 使用new Paragraph是为了确保单元格中的文本是格式化的段落,而不是简单的文本节点。
      通过这种方式,代码能够灵活地处理具有不同复杂度的表格列定义,无论是简单的单列还是具有嵌套子列的复杂列。这样的设计使得表格创建逻辑更加通用和可扩展,能够适应不同的数据源和列定义。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 博世战胜三星,577亿最大笔收购,豪赌杀入自动化新业务
  • No static resource favicon.ico.问题解决
  • AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动
  • 从源码看 Redis:深入理解 redisDb 和 redisObject
  • Python笔试面试题AI答之面向对象常考知识点
  • 图形编辑器基于Paper.js教程10:导入导出svg,导入导出json数据
  • 深度对话安天王小丰:我们应该从微软“蓝屏”事件学到什么?
  • 在云服务器上自动化部署项目,jenkins和gitee
  • 9.Redis的Set类型
  • 绝密!OceanBase OBCP备考模拟题讲解(1)
  • Python数值计算(1)——Numpy中数据的保存和加载
  • 芋道源码yudao-cloud 二开笔记(Feign服务调用,如何定义一个 API 接口)
  • 信息学奥赛初赛天天练-52-CSP-J2019基础题3-抽屉原理、鸽巢原理、乘法原理、二叉树遍历、前序遍历、中序遍历、后序遍历
  • 下属“软对抗”,工作阳奉阴违怎么办?4大权谋术,让他不敢造次
  • 复制列表(切片复制)
  • 【译】理解JavaScript:new 关键字
  • cookie和session
  • javascript 哈希表
  • Nacos系列:Nacos的Java SDK使用
  • Promise面试题,控制异步流程
  • quasar-framework cnodejs社区
  • Redis 懒删除(lazy free)简史
  • 对象引论
  • 关于List、List?、ListObject的区别
  • 今年的LC3大会没了?
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 写给高年级小学生看的《Bash 指南》
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 赢得Docker挑战最佳实践
  • 优化 Vue 项目编译文件大小
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 带你开发类似Pokemon Go的AR游戏
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​secrets --- 生成管理密码的安全随机数​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Z2294. 打印树的直径
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (7)STL算法之交换赋值
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)docker:Dockerfile构建容器运行jar包
  • (转)菜鸟学数据库(三)——存储过程
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net CHARTING图表控件下载地址
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查