首页 > 其他分享 >如何在Excel中实现三联类模板?

如何在Excel中实现三联类模板?

时间:2023-10-27 11:57:30浏览次数:31  
标签:绑定 代码 单元格 Excel 三联 com 模板

本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

在一些报表打印应用场景中,会有类似于如下图所示的排版格式:

一般情况下将这种类型的需求称为“三联”类型,这种三联需求的关键点在于以下两点:

1. 部分单元格需要同时绑定多个字段,并将其组合为一段文字,比如上图中的义务教育入学报道单和义务教育入学通知书下方的两段话,它们包含了日期信息和学校名称信息。

2. 其中一联的部分内容的高度是可变的,比方说上图中,第二、三联中间的那一段话的长度是不确定的,因此它所占据的单元格行数也是不确定的。

下面小编就将为分别为大家介绍如何实现上面两点需求:

1. 同一个单元格绑定多个字段

以上述应用场景为例,小编分别用黄s色和蓝色的背景色表示义务教育入学报道单和义务教育入学通知书下方的两段话,它们都绑定了多个字段。

使用代码实现将数据对象绑定在一个单元格内:

同时,使用自定义单元格来实现文本的拼接:

完整代码可以点击这里:https://docs.grapecity.com.cn/spreadjs/practice/data-binding/cell-binding-object

2. 改变第二、三联的单元格,并不影响第一联的内容。

这里的思路不是插入新的行,而是将第三联下方的单元格向下移动,于是这里便需要做两件事,第一,记录需要向下移动的区域;第二,计算要向下移动几行。

关于第一点,可以选中区域,并使用上方的按钮来设置需要向下移动的区域,将其记录在tag中:

代码如下:

而第二点,则稍微有点麻烦,因为真实的文本需要几行单元格展示,不仅和文字的长度有关,还与单元格的宽度(考虑到单元格是合并的,这里需要分开计算并相加)、字体的大小都有关系:

计算文本长度时,使用canvas的measureText方法即可,需要将canvas的字体设置为和表单中一致,文本存在自定义单元格的实例中,直接获取即可:

最后,使用计算出来的diff,扩大单元格合并的范围,并向下移动对应行数即可:

这里要先移除合并单元格,再重新添加一次。

至此,核心的功能就完成了。

总结

以上就是在Excel中实现横向排版/三联类的模板的方法介绍。如果您想了解完整代码,可以访问下列Gitee/Github地址:

https://gitee.com/GrapeCity/typesetting_triple

https://github.com/GrapeCityXA/typesetting_triple

无论是初学者还是有经验的专业人士,都将为您提供有价值的指导和帮助。

扩展链接:

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

标签:绑定,代码,单元格,Excel,三联,com,模板
From: https://www.cnblogs.com/powertoolsteam/p/17771581.html

相关文章

  • 高效技巧揭秘:Java轻松批量插入或删除Excel行列操作
    摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在职场生活中,对Excel工作表的行和列进行操作是非常普遍的需求。一般情况下在Excel中,可以通过右键菜单插入或者删除行与列。不过在软件开发......
  • Mybatis代码生成——velocity模板元素
    { date=2020-09-26 superControllerClassPackage=null superServiceImplClassPackage=com.baomidou.mybatisplus.extension.service.impl.ServiceImpl baseResultMap=true sEntityName=dictBuilding superMapperClass=BaseMapper superControllerClass......
  • Mybatis代码生成——velocity模板语法
    velocity模板其实就是java不分语法的翻译,用到的属性还是java的方法,get,set,等1.截取部分字段substring复制代码1原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串。2#set($str=$!ag.tagValue)34#if($str.length()>30)5#set($str=$str.substring(0,30))......
  • Excel设置日期格式没有反应
    1. 问题描述   将某一列转换为格式,发现怎么转换都不成功。   例如:想把10/20/231:40 转换成2023-10-201:40  却无法转换成功2. 解决方法   网上说的数据分列啥的方法都不好使,简单粗暴一点,直接利用DATE函数来解决即可。(1)第一步:       ......
  • 【UCHome二次开发】UCHome模板语法…
    UCHome二次开发时,了解模板的语法是必须的,下面对其中的语法做一一介绍。至于模板的解析过程请参考《UCHome二次开发之模板解析》。1、调用其他模板<!--{templatefooter}-->说明:将以模板header.htm来替换此处的代码2、调用头像模板代码:<!--{avatar($value[uid],small)}-->解......
  • Dynamics CRM中自定义页面实现附件管理包含下载模板、上传、下载、删除
    前言附件使用的DynamicsCRM平台本身的注释表annotation存储,将附件转换成二进制字节流保存到数据库中,因自带的注释在页面中显示附件不够直观,特做了一个单独的附件管理自定义页面,通过CRM自定义按钮打开对话框的方式展示附件列表页面。同时支持下载附件模板,页面为简单的H5+Bootstr......
  • excel商品对应价格设置
    要现存在数据库,比如价    =IF(A2="","",VLOOKUP(A2,价!A:B,2,))......
  • GUI_DOWNLOAD函数导出EXCEL内容出现了串列
    请教个问题 ,我现在ZPA400这个程序, 用 GUI_DOWNLOAD 下载的EXCEL文件,内容出现了串列,结果如下 导致串列的具体字段为:ZHR018301字段内容为:应安保管控调整要求,员工进入厂区禁止携带智能手机,警卫自行拆除闸机、移位监控、搬运手机柜节省RMB1200元,按奖惩规定5.3.4.25节省费用......
  • Easy Excel 导出存在绿色角标问题[返回字段类型是数字,当时使用String来接收]
     一、背景EasyExcel导出,发现excel存在大量的绿色角标,很影响美观,如果个人使用可以设置wps或office忽略检测警告,但是我是对业主的,所以这一方式对我不适用,只能通过代码的方式解决. 二、实现通过以下创建一个 ExcelWriter,实现去绿色角标的关键是使用easyExc......
  • # yyds干货盘点 # Python实现excel工作簿中单元格底色为黄色的数据筛选
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个pandas数据提取的问题,一起来看看吧。大佬们请教个问题有没有什么办法可以实现 excel工作簿中单元格底色为黄色的行筛选出来 当行只要有一个单元格标黄了当行数据筛选出来?二、实现过程这里【......